注册 登录
编程论坛 C++教室

一个简单的数值运算:求高手

bailong4643 发布于 2012-04-16 23:25, 366 次点击
int a=3;
int b=++a + ++a + ++a;
cout<<b;··结果是多少?为什么VS2010和vc6.0的输出结果不一样····高手求过程
6 回复
#2
ab10349827492012-04-16 23:49
根据运算符的优先级:++  最大,=最小,+在它们之间,再看结合性,++右到左,+左到右,=右到左,又因为是前自增,所以:第一个加加后,a=4.第二个加加后a=5.第三个加加后a=6.所以总上,b=15.
#3
bailong46432012-04-17 07:08
回复 2楼 ab1034982749
vc里面调试b=16·vs里面调试b=18;
#4
寒风中的细雨2012-04-17 09:11
int b=++a + ++a + ++a;
前++
//vc6.0
       tmp
      /  \
   tmp    ++a
   /  \
++a   ++a

//vs
        3(a)
       /  \
    2(a)   ++a
   /  \
++a    ++a
#5
ab10349827492012-04-17 11:29
本人才疏学浅,对于你的提问完全是出于自己推算,经你说了之后。本人也分别在VC6.0和VS2010上进行了测试,结果自然和你的也一样,
所以我也很纳闷…………
#6
寒风中的细雨2012-04-17 11:54
回复 5楼 ab1034982749
像这样的表达式 和编译器的具体实现有关   只要自己明白前后之间的区别就可以了  没什么不对的   要用的时候注意点用就好了
#7
lucky5635912012-04-17 11:57
这种问题没意义。
1