首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译和代码优化

编译和代码优化
EN

Stack Overflow用户
提问于 2013-10-26 10:57:36
回答 5查看 127关注 0票数 0

我将以一种非常简单的形式来说明我的问题,即:

如果我输入C

代码语言:javascript
复制
void main(){
 int a=3+2;
 double b=7/2;
}

什么时候a和b会被赋值为5和3.5是在编译代码的时候还是在运行代码的时候?

换句话说,当我按下compile时会发生什么?在赋值和计算方面,它与我按run时的情况有何不同,以及与编写代码的方式有何不同:

代码语言:javascript
复制
void main(){
 int a=5;
 double b=3.5;
}

我问这个是因为我听说过编译器优化,但这不是我真正的领域。

任何评论,评论都将受到高度赞赏。谢谢。

EN

回答 5

Stack Overflow用户

发布于 2013-10-26 11:00:57

既然你问的是“代码优化”--一个好的优化编译器会将这些代码优化到void main(){}ab将被完全淘汰。

还有,7/2 == 3,而不是3.5

票数 7
EN

Stack Overflow用户

发布于 2013-10-26 11:02:06

编译将把高级语言翻译成低级语言,比如汇编。一个好的编译器可以进行优化,这可以是可定制的(例如使用-O2)选项或类似的东西。

对于您的代码,double b=7/2;将生成3.0而不是3.5,因为您要执行整数和整数操作。如果你想使用3.5,你应该像double b=7.0/2.0;一样去做。这是人们常犯的错误。

票数 2
EN

Stack Overflow用户

发布于 2013-10-26 10:59:32

它依赖于编译器,一个好的编译器可以做CF和/或DCE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19602310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档