java - 为什么 C 和 Java 的表达式 m++ + (++m) 的输出不同

标签 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/

相关文章:

c - C 中逻辑或 ( || ) 的工作原理?

c - fscanf 在什么情况下会溢出内存?

javascript - 大括号对象符号在任何表达式中都有效吗?

c# - 使用 Linq Any 查询或表达式构建查询以提高性能

javascript - 数字的正则表达式仅在 1-24 之间并且还允许小数

java - 找到最长的公共(public)前缀?

java - @Context 对象从哪里来

java - 我需要声明一个可绘制变量吗?

java - 如何从数据库生成用于 Hibernate 4 的 Java 类

c - 为什么我的 C 管道输出仍然产生垃圾数据?