你用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
因为当时我把视频上的几个代码++-- 都试了,很迷茫请人指点,然后别人说,说再多你都不明白,调试运行看汇编如何操作,你就能明白了。
虽然上边这个分析,我是懂了,但是还是有点迷茫,都迷糊了 回复 4# 11212122
这是VC编译器优化的结果,即两个相同的变量先自增完成再相加~ 这个问题不要多想 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 清楚了
页:
[1]