输出java代码背后的原因是什么?

时间:2014-08-23 10:11:38

标签: java operators increment decrement

考虑以下简单的java代码

public static void main(string args[])
{
  int x=10;
  int y;

  y=x++;
  y=y--;

  System.out.println(y);
}

此处输出为10.但实际上是y变量递减。 但根据我的输出应该是9。 是什么原因?

5 个答案:

答案 0 :(得分:3)

后缀增量运算符的工作方式如下:

  • 增加操作数
  • 返回操作数的先前值

postfix-decrement运算符的工作方式如下:

  • 减少操作数
  • 返回操作数的先前值

因此,以下代码的工作原理如下:

x = 10;  // x == 10
y = x++; // x == 11, y == 10
y = y--; // y ==  9, y == 10

如您所见,y = y--相当于y = y

在操作结束时对y的值没有影响。

答案 1 :(得分:1)

您需要了解前缀和后缀运算符。

y=x++表示将x指定为y,然后将x递增1;

y=++x表示递增x,然后将递增的值指定给y。

如果您了解这种差异,那么代码的作用就显而易见了。

答案 2 :(得分:0)

post-decrement运算符返回变量的旧值。所以当你写

y = y--;

它递减y,然后将旧值分配回y。就像你写的那样:

old_y = y; // Save old value
y = y - 1; // perform y-- decrement
y = old_y; // Assign the saved value

答案 3 :(得分:0)

以下是发生的事情

int x=10; 
  

声明一个可变的x并为其指定10。

int y;
  

声明变量y

y=x++;

increment x therefore x=11 and return its old value therefore y=10

y=y--;
  

因此在当前点递减y y = 9,并返回其旧值10,并由y捕获,因此y = 10。

System.out.println(y);

<强>输出

10

答案 4 :(得分:0)

x = 10; // x == 10

y = x ++; //这里,第一个Y以值10对齐,并以x递增1

y = y - ; //这里,第一个Y以值10对齐,y递减1

因为如果我们使用Postincrement或postdecrement首先它将值赋值给Variable然后它执行递增或递减。