鱼C论坛

 找回密码
 立即注册
查看: 2879|回复: 5

c

[复制链接]
发表于 2012-2-16 21:22:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int i=5,  (++i)+(++i)+(++i)为什么运行的结果是22呢?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 22:21:13 | 显示全部楼层
本帖最后由 w352517879 于 2012-2-16 22:24 编辑

这个是 编译器的问题
你可以反汇编下
可以看到的 大概意思就是
你是不是认为是 6+7+8=21
但是经过优化只有 就是7+7+8=22
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 22:43:35 | 显示全部楼层

不好意思啊,我是个初学者,我是认为是6+7+8=21,至于你说的这个过程我是真的看不懂,经过优化又是什么意思呢?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 23:09:51 | 显示全部楼层
Speculate 发表于 2012-2-16 22:43
不好意思啊,我是个初学者,我是认为是6+7+8=21,至于你说的这个过程我是真的看不懂,经过优化又是什么意 ...

建议学习C语言不要纠结在这个问题上,因为这个没有意义,如果有时间你可要去学习一下汇编,学完汇编反编译程序你就能理解了。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-17 20:29:44 | 显示全部楼层
噢,那谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-18 00:57:59 | 显示全部楼层
反汇编出来的代码,我看不懂,汇编我才学不久,不够我觉得"()",小括号的优先级最高,应该先算,i先自加三次,再做加法运算,当然反汇编才是最有说服力的
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-11 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表