考虑以下简单的java代码
public static void main(string args[])
{
int x=10;
int y;
y=x++;
y=y--;
System.out.println(y);
}
此处输出为10.但实际上是y变量递减。 但根据我的输出应该是9。 是什么原因?
答案 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然后它执行递增或递减。