关于q=(++j)+(++j)+(++j);的疑问
q=(++j)+(++j)+(++j); 按照我的算法,这个应该是4+5+6=15
为什么编译出来的结果是16??? 论坛搜索下N多大牛都会打过类似的了 真心没激情回答自增问题了 本帖最后由 烟消云散 于 2014-1-29 00:56 编辑
这个没必要太纠结,不同编译器会有不同结果的
VC6的环境下应该是16
int j=3,q;
q=(++j)+(++j)+(++j);
相当于
q=A+B+C;
先算前两个也就是A+B,然后再和C相加结果赋给q,
A+B:当然是先算自加再相加,自加两次之后i=5再相加得10,即A+B=10.
算C:此时i=5,再自加一次i=6, C=6.
q=A+B+C;不就是16么
感觉说的挺乱的,凑活看吧,哪没看明白再回复我.
有说错的地方也请坛友帮忙指出,谢谢!
明白了,谢谢! 看这个帖子吧:http://bbs.fishc.com/thread-43193-1-1.html int j = 3;
int sum = 0;
sum = (++j) + (++j) + (++j);
Console.WriteLine("{0},{1}",sum,j);
Console.ReadKey();在C#中是15 = = 这个问题小甲鱼的讲汇编语言基础知识的第五章有说的啊~
如果用VC,VC编译时会优化一下~
不同编译器的结果都不一样 :shock::shock::shock::shock::shock::shock:!!!额 小甲鱼汇编视频里面讲了这个问题
页:
[1]