我预计变量的后递增和预递增以及将结果分配给自身的工作方式会有所不同。但是,虽然后者按预期工作,但前者作为无限 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
}
谢谢
最佳答案
如本StackOverflow answer中所述,后增量的工作原理是存储 y 的副本,加 1 并返回副本。这意味着y++
的返回值不是y+1
,而仍然只是y
。由于您用 y++
覆盖 y
,因此您实际上只是在说 y = y
。
关于java循环中的前自增、后自增和自赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53920604/