You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java运算顺序与后置自增疑问:为何x + x++ + x的输出结果为25?

为何输出结果是25?
// CODE 1
public class YourClassNameHere {
    public static void main(String[] args) {
      int x = 8;
      System.out.print(x + x++ + x);
    }
}

首先纠正你的逻辑偏差:你推测的8 + 9 + 8 = 25是错误的,实际运算过程为8 + 8 + 9 = 25,第三个x取值为9和Java的表达式求值规则、后置自增的执行逻辑直接相关:

  • Java中所有表达式的操作数求值顺序严格遵循从左到右的规则,和运算符优先级无关,优先级只会决定运算的结合方式,不会改变操作数的读取顺序
  • 后置自增x++的执行逻辑是:先返回x当前的原始值,再立即对x执行+1操作,这个修改对后续所有x的读取都生效

我们一步步拆解CODE1的执行过程:

  1. 初始状态:x = 8
  2. 从左到右读取第一个操作数x:拿到的值为8,第一个参与运算的数记为8
  3. 读取第二个操作数x++:先返回x当前的原始值8,第二个参与运算的数记为8,紧接着把x的值更新为9
  4. 读取第三个操作数x:此时x已经被上一步的自增操作修改为9,第三个参与运算的数记为9
  5. 最终求和:8 + 8 + 9 = 25,和实际输出结果一致

你举的CODE2逻辑和上述规则完全匹配:

// CODE 2
public class YourClassNameHere {
    public static void main(String[] args) {
      int x = 8;
      System.out.print(x++);
    }
}

这段代码里x++先返回原始值8作为打印结果,之后x也会更新为9,只是这段代码没有在x++之后再读取x的值,所以看不到修改后的效果。如果你在CODE2的打印语句后新增一行System.out.print(x);,就能看到输出结果追加了9,刚好对应CODE1里第三个x取9的逻辑。


内容的提问来源于stack exchange,提问作者Jerome Quah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:57:03