本篇文章给大家谈谈c语言某一行不被优化,以及c语言常见的优化方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、请问我这个c语言代码还能更加优化吗!2、c语言防止优化3、怎么指定某段代码不被编译器优化掉
请问我这个c语言代码还能更加优化吗!
优化0:题目要求输入学生个数上限,所以输入n那里需要验证。
优化1:减少循环次数,题目没有说找最大最小必须单独循环。那么直接在输入循环的时候就能得结果。
优化2:你的j每次只循环一次,没有必要。
优化3:输入那里用临时变量传递,没必要,直接用数组地址。
优化4:数组最大值定义常量,便于后期程序修改参数。
下面代码,我完全按照你的写法写的,你拿来参考。(要是学过指针,比大小那里试试换成指针更好)
#include stdio.h
#define MS 40//最大学生人数
int main()
{
int n=0,i;
int a[MS][2];
int minmark,maxmark,minxuehao,maxxuehao;
while(!n || nMS)
printf(“请输入学生数量:”),scanf(“%d”,n);
for(i=0;in;i++)
{
printf(“请输入学生学号:”);
scanf(“%d”,a[i][0]);
printf(“请输入学生成绩:”);
scanf(“%d”,a[i][1]);
if(i==0)
minmark=maxmark=a[0][1];
else{
if(minmarka[i][1]) minmark=a[i][1],minxuehao=a[i][0];
if(maxmarka[i][1]) maxmark=a[i][1],maxxuehao=a[i][0];
}
}
printf(“最高分为%d,学号为%d\n”,maxmark,maxxuehao);
printf(“最高分为%d,学号为%d\n”,minmark,minxuehao);
return 0;
}
c语言防止优化
编译器编译命令里有设置选项,通过设置,你可以要求 不优化,也可以要求用哪种优化。
具体选项有哪些,要查自己编译器的帮助文件。
例如,MS VC++ 6.0 编译器编
优化选项:
/O1:优化使产生的可执行代码最小
/O2:优化使产生的可执行代码速度最快
/Oa:指示编译器程序里没有使用别名,可以提高程序的执行速度
/Ob:控制内联(inline)函数的展开
/Od:禁止代码优化
/Og:使用全局优化
/Oi:用内部函数去代替程序里的函数调用,可以使程序运行的更快,但程序的长度变长
/Op:提高浮点数比较运算的一致性
/Os:产生尽可能小的可执行代码
/Ot:产生尽可能块的可执行代码
/Ow:指示编译器在函数体内部没有使用别名
/Ox:组合了几个优化开关,达到尽可能多的优化
/Oy:阻止调用堆栈里创建帧指针
/O2 为了加速,会优化掉。 选 /Od 不优化。
怎么指定某段代码不被编译器优化掉
在C语言中, 某些语句,如:
int a;
a = 0;
a = 1;
a =2; 这个可能编译器会把前面两句给优惠掉, 这个如果 前面两句也是必须要执行的, 可以把 int a 改成 volatile int a。
在编译的时候, 编译器可能会预测到某个变量的值, 就把中间的没有必要的语句给优化掉,volatile 关键字就是告诉编译器,不要做这样的预测性优化, 按照文本代码来翻译。
c语言某一行不被优化的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言常见的优化方法、c语言某一行不被优化的信息别忘了在本站进行查找喔。