考虑:
int m = 2, n;
n = m++ + (++m);
在C输出中是:
m = 4, n = 4;
在Java输出中是:
m = 4, n = 5;
这是怎么发生的?
答案 0 :(得分:9)
它可能不同,因为C不允许正确的程序包含这样的表达式 - C不定义此类程序的行为。这为C编译器提供了解释这些表达式的广泛范围。
Java通过定义像这样的表达式的预期行为来更紧密地约束实现。
(在C中断的规则是,如果没有插入序列点,表达式可能不会多次修改对象的值。)
答案 1 :(得分:3)