der*_*riv 3 java logic increment postfix-operator
我有这段简单的代码,但我不明白这部分:sum += i++.
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);
Run Code Online (Sandbox Code Playgroud)
我得到的结果是 6,我不明白如何以及为什么。
Spe*_*ric 11
sum += i++ 相当于 sum = sum + i; i = i + 1
这会将您的代码转换为:
int num1 = 5;
int sum = 0;
if (num1 < 100) {
for (int i = 0; i < num1; i++) //<-- i is incremented
sum = sum + i; //<-- sum gets incremented by i here
i = i + 1; //<-- i is incremented again, increment/loop-cycle ratio = 2
System.out.println("sum = " + sum);
} else {
sum = -1;
}
System.out.print(sum);
Run Code Online (Sandbox Code Playgroud)
i每个循环周期递增 2,每个循环周期sum递增i。
结果是 6,因为:
您在i0 和sum0处开始循环。
在第一个循环中循环sum增加 0,i增加 2 (2)。
在第二个循环周期,sum增加 2 (2) 和i增加 2 (4)。
在第三个循环周期,sum增加 4 (6) 和i增加 2 (6)。
此时,i不再满足i < num1where条件num1为5,结束循环。
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |