java pre pre和post post在循环中的自赋值

时间:2018-12-25 08:25:29

标签: java

我期望变量的后递增和前递增,以及将结果分配给自身工作的方式有所不同。但是,尽管后者按预期运行,但前者运行为无限while循环。有人可以指出我在这里缺少什么吗?

int y = 0;
int z = 4;

while(y<z)
{
    System.out.println(y);
    y =y++;//this prints 0 infinite times, shouldn't why be assigned values 0,1,2,3 with each pass?
    //y =++y;//this works as expected
}

谢谢

1 个答案:

答案 0 :(得分:0)

如本StackOverflow answer中所述,后递增通过存储y的副本,加1并返回该副本来工作。这意味着y++的返回值不是y+1,而仅仅是y。由于您要用y覆盖y++,因此您实际上只是在说y = y