Java中sum += i++的执行逻辑是什么?为何运行结果为6?
sum += i++ 执行逻辑及结果推导 核心语法拆解
sum += i++ 是两个语法的组合,执行顺序固定:
- 复合赋值运算符
+=:sum += a等价于sum = sum + a - 后置自增运算符
i++:先返回i的当前值参与运算,再将i的数值加1
所以这行代码的执行步骤为:
- 读取i的当前值,作为参与加法运算的右值
- 把该值加到sum上,更新sum的数值
- 最后将i的数值加1
结合代码的完整执行推导
你提供的代码如下:
int num1 = 5; int sum = 0; if (num1 < 100) { for (int i = 0; i < num1; i++) sum += i++; //? System.out.println("sum = " + sum); } else { sum = -1; } System.out.print(sum);
for循环的固定执行逻辑为:初始化循环变量 → 判断循环条件 → 执行循环体 → 执行循环增量语句 → 再次判断循环条件,往复循环,完整执行过程如下:
- 初始化变量:
num1 = 5,sum = 0 - 判断
num1 < 100结果为真,进入if代码块 - 执行for循环:
- 初始i赋值为0,第一次判断
0 < 5成立,进入循环体- 执行
sum += i++:取i当前值0加给sum,sum更新为0+0=0,i自增为1 - 执行for循环的增量语句
i++,i更新为2
- 执行
- 第二次判断
2 < 5成立,进入循环体- 执行
sum += i++:取i当前值2加给sum,sum更新为0+2=2,i自增为3 - 执行for循环的增量语句
i++,i更新为4
- 执行
- 第三次判断
4 < 5成立,进入循环体- 执行
sum += i++:取i当前值4加给sum,sum更新为2+4=6,i自增为5 - 执行for循环的增量语句
i++,i更新为6
- 执行
- 第四次判断
6 <5不成立,退出for循环
- 初始i赋值为0,第一次判断
- 最终输出sum的结果为6,和你运行得到的结果一致
注意事项
这种在for循环的增量语句和循环体中同时修改循环变量i的写法非常不推荐,可读性极低,很容易引发预期外的逻辑错误,实际开发中应当避免这类写法。
内容的提问来源于stack exchange,提问作者tokyo
相关产品推荐
相关产品推荐

