为什么Java中(a ++ + a ++ + a ++)的结果为6?

问题描述 投票:0回答:2

为什么此代码给出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
java post increment
2个回答
3
投票

这是由于后增量运算符如何工作。让我们逐步进行:

  • a++第一次在后台返回a(1)并递增a 之后。所以现在我们有1,但是a的值实际上是2。

  • 第二次,a++返回a(2),并在后台再次递增。现在我们有1 + 2,a的值为3。

  • 第三次,a++返回a(3),然后在后台再次递增。现在我们有了1 + 2 + 3a的值为4。

因此[i的值为1 + 2 + 3 = 6

即使最后有i而不是aa++的值也不会改变,因为a++仅返回a

我建议改用a + 1,它返回a + 1,或者至少是++a,它递增a,然后返回它。后递增运算符(和前递增运算符)有其用途,但有时可能导致代码混乱和错误。

此SO问题可能有帮助:How do the post increment (i++) and pre increment (++i) operators work in Java?


0
投票

相同的原因是6。不需要详细说明。

int a = 1;
int r = a++; 
r = r + a++;
r = r + a++; 
System.println(r); // prints 6
© www.soinside.com 2019 - 2024. All rights reserved.