<分区>
Possible Duplicate:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
int i = 10;
int n = i++*5*i;
输出
n 的值 = 550(在 Java 中) n = 500 的值(在 C 和 C++ 中)
为什么结果不一样?为什么不同?
<分区>
Possible Duplicate:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
int i = 10;
int n = i++*5*i;
输出
n 的值 = 550(在 Java 中) n = 500 的值(在 C 和 C++ 中)
为什么结果不一样?为什么不同?
最佳答案
在 Java 中,这是一个定义明确的操作。它将:
i
(现在是 11);i
的旧值 (10),因为您使用了 postfix increment operator ;i
的当前值 (50*11 = 550);在 C 和 C++ 中 this operation has undefined behaviour ,所以任何事情都有可能发生。如果可能发生任何事情,这将解释结果,无论结果是什么,以及它们对您是否有意义。
关于java - C、C++ 和 Java 中的不同结果相同的表达式。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438860/