增量运算符如何在Java中运行?

时间:2015-11-03 08:13:41

标签: java

为什么结果是8而不是9?

按我的逻辑:

  1. ++x给出4
  2. 4 + 4给出8,所以x = 8
  3. 但是在x之后应该增加x++语句,因此它应该是9。
  4. 我的逻辑出了什么问题?:

    int x = 3;
    x = x++ + ++x;
    System.out.println(x); // Result: 8 
    

2 个答案:

答案 0 :(得分:21)

您应该注意表达式从左到右进行评估:

首先x++递增x但返回之前的值3。

然后++x递增x并返回新值5(在两个增量之后)。

x = x++ + ++x;
    3   +  5     = 8

但是,即使您将表达式更改为

x = ++x + x++;

你仍然会得到8

x = ++x + x++
     4  +  4   = 8

这次,一旦将加法结果赋给x,就会覆盖x(x++)的第二个增量。

答案 1 :(得分:1)

++ x称为preincrement,x ++称为postincrement。 x ++给出前一个值,++ x给出新值。