我期望变量的后递增和前递增,以及将结果分配给自身工作的方式有所不同。但是,尽管后者按预期运行,但前者运行为无限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
}
谢谢
答案 0 :(得分:0)
如本StackOverflow answer中所述,后递增通过存储y的副本,加1并返回该副本来工作。这意味着y++
的返回值不是y+1
,而仅仅是y
。由于您要用y
覆盖y++
,因此您实际上只是在说y = y
。