前后增量中的java vs C++

-23 c++ java increment operator-keyword

为什么Java输出50时C++输出51相同的代码概念?

int i=5;

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

print i
Run Code Online (Sandbox Code Playgroud)

Java的: 50

C++: 51

eer*_*ika 7

结果是不同的,因为lauguages指定不同.

为什么java说50

因为评估的顺序是在Java中定义的.增加是:6 + 7 + 8 + 9 + 10 + 10 == 50.最终的后增量被赋值覆盖并且没有效果.

而c ++说51

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