<分区>
考虑:
int m = 2, n;
n = m++ + (++m);
在 C 中输出是:
m = 4, n = 4;
在 Java 中输出是:
m = 4, n = 5;
这是怎么发生的?
标签 java c expression
<分区>
考虑:
int m = 2, n;
n = m++ + (++m);
在 C 中输出是:
m = 4, n = 4;
在 Java 中输出是:
m = 4, n = 5;
这是怎么发生的?
最佳答案
它可能有所不同,因为 C 不允许正确的程序包含这样的表达式 - C 没有定义这样的程序的行为。这让 C 编译器在解释此类表达式时有很大的自由度。
Java 通过像这样定义表达式的预期行为来更严格地约束实现。
(这在 C 中打破的规则是,如果没有插入序列点,表达式不能多次修改对象的值)。
关于java - 为什么 C 和 Java 的表达式 m++ + (++m) 的输出不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7790177/