为什么此代码给出6作为结果?
int a = 1;
int i = a++ + a++ + a++;
System.out.println(i); // 6
如果这样做,结果是相同的:
int a = 1;
int i = a++ + a++ + a;
System.out.println(i); // 6
这是由于后增量运算符如何工作。让我们逐步进行:
a++
第一次在后台返回a
(1)并递增a
之后。所以现在我们有1,但是a
的值实际上是2。
第二次,a++
返回a
(2),并在后台再次递增。现在我们有1 + 2,a
的值为3。
第三次,a++
返回a
(3),然后在后台再次递增。现在我们有了1 + 2 + 3
,a
的值为4。
因此[i
的值为1 + 2 + 3 = 6
即使最后有i
而不是a
,a++
的值也不会改变,因为a++
仅返回a
。
我建议改用a + 1
,它返回a + 1
,或者至少是++a
,它递增a
,然后返回它。后递增运算符(和前递增运算符)有其用途,但有时可能导致代码混乱和错误。
此SO问题可能有帮助:How do the post increment (i++) and pre increment (++i) operators work in Java?
相同的原因是6。不需要详细说明。
int a = 1;
int r = a++;
r = r + a++;
r = r + a++;
System.println(r); // prints 6