asdasddd 发表于 2014-1-28 18:57:12

关于q=(++j)+(++j)+(++j);的疑问


q=(++j)+(++j)+(++j); 按照我的算法,这个应该是4+5+6=15
为什么编译出来的结果是16???

牡丹花下死做鬼 发表于 2014-1-28 22:34:08

论坛搜索下N多大牛都会打过类似的了 真心没激情回答自增问题了

烟消云散 发表于 2014-1-29 00:47:21

本帖最后由 烟消云散 于 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么

感觉说的挺乱的,凑活看吧,哪没看明白再回复我.
有说错的地方也请坛友帮忙指出,谢谢!

asdasddd 发表于 2014-1-29 08:16:46

明白了,谢谢!

黑色传说 发表于 2014-1-29 17:36:45

看这个帖子吧:http://bbs.fishc.com/thread-43193-1-1.html

ColbySuns 发表于 2014-1-29 19:33:24

            int j = 3;
            int sum = 0;
            sum = (++j) + (++j) + (++j);
            Console.WriteLine("{0},{1}",sum,j);
            Console.ReadKey();在C#中是15 = =

Taily 发表于 2014-2-9 20:32:45

这个问题小甲鱼的讲汇编语言基础知识的第五章有说的啊~
如果用VC,VC编译时会优化一下~
不同编译器的结果都不一样

cyn940518 发表于 2014-2-9 20:35:42

:shock::shock::shock::shock::shock::shock:!!!额

风吹过窗台 发表于 2014-2-9 20:46:33

小甲鱼汇编视频里面讲了这个问题
页: [1]
查看完整版本: 关于q=(++j)+(++j)+(++j);的疑问