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。
具体到这段代码的执行步骤:
- 初始状态
b = 3。 - 执行
b += b++时,先获取左侧b的初始值:3。 - 计算右侧的
b++:返回当前b的数值3,同时将b自增为4。 - 计算
3 + 3 = 6,并把结果赋值给b,直接覆盖了之前自增得到的4。 - 最终输出的
b就是6。
说白了,b++的自增确实执行了,但后续被+=的赋值操作覆盖了,所以你看不到预期的7。
内容的提问来源于stack exchange,提问作者moni
相关产品推荐
相关产品推荐

