593064337 发表于 2011-4-10 21:52:00

demon 发表于 2011-4-11 15:09:50

不用纠结这个问题了,不同的编译器会有不同的值!

狼行绝路 发表于 2011-4-11 17:53:03

11212122 发表于 2011-4-14 10:12:53

q=(++i) + (++i)+ (++i) ;
你用VC 调试的时候
看汇编代码(我也是只懂得一点简单的汇编指令)
VC是这样处理的


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

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

虽然上边这个分析,我是懂了,但是还是有点迷茫,都迷糊了

小甲鱼 发表于 2011-4-18 14:56:59

回复 4# 11212122


    这是VC编译器优化的结果,即两个相同的变量先自增完成再相加~

旭日东升 发表于 2011-4-21 18:12:14

这个问题不要多想

fishz 发表于 2011-4-21 20:20:27

int i=5;
int j=(++i)+(++i)+(++i)+(++i)+(++i);

//下面是三种编译器得到的三种不同的结果:
//VC6: j=7+7+8+9+10=41
//VS:   j=10+10+10+10+10=50
//JDK:    j=6+7+8+9+10=40

鱼C工作室.YCGZS 发表于 2015-12-13 12:04:15

清楚了
页: [1]
查看完整版本: ++i,i++。 搞不明白为什么- -。