我将以一种非常简单的形式来说明我的问题,即:
如果我输入C
void main(){
int a=3+2;
double b=7/2;
}什么时候a和b会被赋值为5和3.5是在编译代码的时候还是在运行代码的时候?
换句话说,当我按下compile时会发生什么?在赋值和计算方面,它与我按run时的情况有何不同,以及与编写代码的方式有何不同:
void main(){
int a=5;
double b=3.5;
}我问这个是因为我听说过编译器优化,但这不是我真正的领域。
任何评论,评论都将受到高度赞赏。谢谢。
发布于 2013-10-26 11:00:57
既然你问的是“代码优化”--一个好的优化编译器会将这些代码优化到void main(){}。a和b将被完全淘汰。
还有,7/2 == 3,而不是3.5
发布于 2013-10-26 11:02:06
编译将把高级语言翻译成低级语言,比如汇编。一个好的编译器可以进行优化,这可以是可定制的(例如使用-O2)选项或类似的东西。
对于您的代码,double b=7/2;将生成3.0而不是3.5,因为您要执行整数和整数操作。如果你想使用3.5,你应该像double b=7.0/2.0;一样去做。这是人们常犯的错误。
发布于 2013-10-26 10:59:32
它依赖于编译器,一个好的编译器可以做CF和/或DCE
https://stackoverflow.com/questions/19602310
复制相似问题