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

Java算术自增运算符执行结果差异:为何b与c结果不同?

Java后缀自增运算符的表达式求值问题

先看两段代码的执行结果:

// 结果b=12
int a = 6;
int b = a + a++; 

// 结果c=13
int a = 6;
int c = a++ + a; 

你疑惑的点是:既然后缀自增运算符优先级更高,为什么结果不是都为13?核心原因是优先级不改变表达式的求值顺序,Java里表达式是严格从左到右求值的,后缀自增的规则是「先取值,再自增」,结合这两点就能解释差异:

  • 对于a + a++:

    1. 先计算左边的a,取当前值6;
    2. 再计算右边的a++,先返回当前值6,随后a自增为7;
    3. 最后做加法:6 + 6 = 12,赋值给b。
  • 对于a++ + a:

    1. 先计算左边的a++,先返回当前值6,随后a自增为7;
    2. 再计算右边的a,此时a已经是7,取7;
    3. 最后做加法:6 + 7 = 13,赋值给c。

优先级高只是意味着a++会作为一个独立运算单元,不会被拆分成(a+) + a这类错误结构,但求值的顺序依然是从左到右逐个处理操作数,这才是导致两个结果不同的关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:52:03