标题:?:表达式的执行顺序问题?
只看楼主
ningyusui
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-1-14
得分:0 
c/c++标准只明确规定了逻辑表达式的运算顺序, 其他运算在优先级相同的时候, 编译器可以自主决定计算顺序。所以,楼主的程序运行结果在不同编译器中可能是不同的。就算在同一个编译器中, 对不同的代码,计算顺序也可能是不相同的。因为编译器会对代码进行优化。 比如有代码如下:
int a=3;
int b=5;
int c= a*b*b+ a*b;
这时候, 编译器会发现, 先计算出右边的a*b, 左边的a*b*b只要在右边的基础上*b就行了, 所以它会先计算右边(当然有些编译器也可能先计算左边,比如有位牛人,他说,我要自己写个编译器,先计算左边,可以, 这是不违反c/c++标准的), 如果我们反过来写成: int c= a*b + a*b*b; 一般来说它就会先计算左边。那如果是 int c= a*b +a/b; 呢? 这时候就不知道到底先计算哪边了。事实上, c/c++之所以不规定运算顺序, 就是为了让编译器进行优化, 以实现最高的效率。
2008-02-01 02:11
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
得分:0 
回复 21# 的帖子
对你的认真态度表示赞同,希望某些人也会象你这样负责,虽然你贴的某些东西-------如聊天记录等----------会造成不必要的麻烦,但您回的这个帖子,我会认真阅读并深刻理解,并诚挚地说:谢谢~!

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-01 09:08
jansongg
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-20
得分:0 
回复 21# 的帖子
谢谢您这么详细和认真地讲解,让我确实认识了很多.我会慢慢去参透的.
看来热心人还是很多啊!!!
真诚地向您说声:谢谢!!
2008-02-01 10:40
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
得分:0 
关于我的主题被锁之事,已到意见区投诉,请众位去看下帖子,发表下意见-----欢迎意见相同的,也欢迎意见不同的。

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-01 14:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-198334-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021322 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved