2017-04-05 41 views
-21

为什么Java的输出50而同一代码的概念C++输出51的Java VS C++中的前置和后置增量

int i=5; 

i= (++i + ++i + ++i + ++i + ++i + i++); 

print i 

爪哇:50

C++:因为lauguages被不同地指定51

+7

这不是有效的C++,这就是原因。 –

+0

这句话的真正目的是什么?(++ i + ++ i ++ ++ i ++ ++ i ++ ++ i ++ ++);'? –

+0

类似/欺骗[这里](http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior) – WhiZTiM

回答

7

结果是不同的。

为什么java的说50

因为计算的顺序是用Java定义左右。加法是:6 + 7 + 8 + 9 + 10 + 10 == 50.最后的增量增量被赋值覆盖并且没有效果。

而C++表示51

所示出的程序有未定义的行为在C++中,因此它可以有任何输出。在这种情况下恰好是51。在这个答案详细信息:https://stackoverflow.com/a/4176333/2079303