鱼C论坛

 找回密码
 立即注册
查看: 2954|回复: 7

++i,i++。 搞不明白为什么- -。

[复制链接]
头像被屏蔽
发表于 2011-4-10 21:52:00 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-11 15:09:50 | 显示全部楼层
不用纠结这个问题了,不同的编译器会有不同的值!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-4-11 17:53:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-14 10:12:53 | 显示全部楼层
q=(++i) + (++i)+ (++i) ;
你用VC 调试的时候
看汇编代码(我也是只懂得一点简单的汇编指令)
VC是这样处理的
1.jpg

q=(++i) + (++i)+ (++i)

先把 i 的值取出来放在eax中,然后自加,自加后放回 i 中  //此时i值为6
然后再把 i 值取出来放在ecx中,自加之后值放回 i中       //此时i值为7
然后把 i 值放在edx中 i 加edx 值放在edx中              //此时edx值为 14
然后再把 i 取出放在 eax中,自加放回 i 中,             //此时 i 值为8
然后用 i 加 edx 值放在edx 里边                        //此时 edx 为22
然后吧edx值 放在 q中                                 //此时 q 为22  输出时 为22

因为当时我把视频上的几个代码  ++  -- 都试了,很迷茫  请人指点,然后别人说,说再多你都不明白,调试运行看汇编如何操作,你就能明白了。

虽然上边这个分析,我是懂了,但是还是有点迷茫,都迷糊了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-18 14:56:59 | 显示全部楼层
回复 4# 11212122


    这是VC编译器优化的结果,即两个相同的变量先自增完成再相加~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-21 18:12:14 | 显示全部楼层
这个问题不要多想
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-21 20:20:27 | 显示全部楼层
  1. int i=5;
  2. int j=(++i)+(++i)+(++i)+(++i)+(++i);  

  3. //下面是三种编译器得到的三种不同的结果:
  4. //VC6: j=7+7+8+9+10=41
  5. //VS:     j=10+10+10+10+10=50
  6. //JDK:    j=6+7+8+9+10=40
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2015-12-13 12:04:15 | 显示全部楼层
清楚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-4 11:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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