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

Java后缀自增运算符疑问:b += b++;结果为何是6而非7?

为什么b += b++的运行结果是6而不是7?

你给出的代码:

int b = 3;
b += b++;
        
System.out.println(b);

你的理解误区在于搞反了复合赋值与后缀自增的执行顺序,正确的执行逻辑要严格遵循Java的表达式求值规则:

  • 后缀自增运算符b++的核心是先返回变量当前的数值,再对变量做自增操作。
  • 复合赋值E1 += E2的执行逻辑等价于E1 = (E1的类型)(E1 + E2),但这里的E1只会被计算一次——先获取E1的初始值,再计算E2的值,最后把两者运算结果赋值给E1。

具体到这段代码的执行步骤:

  1. 初始状态b = 3。
  2. 执行b += b++时,先获取左侧b的初始值:3。
  3. 计算右侧的b++:返回当前b的数值3,同时将b自增为4。
  4. 计算3 + 3 = 6,并把结果赋值给b,直接覆盖了之前自增得到的4。
  5. 最终输出的b就是6。

说白了,b++的自增确实执行了,但后续被+=的赋值操作覆盖了,所以你看不到预期的7。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:07:18