【问题标题】:java pre increment and post increment and self-assignment in loop [duplicate]java预增量和后增量以及循环中的自赋值[重复]
【发布时间】:2018-12-25 08:25:28
【问题描述】:

我预计变量的后增量和前增量以及将结果分配给自身会有所不同。但是,虽然后者按预期工作,但前者作为无限 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
}

谢谢

【问题讨论】:

  • 只需使用y++
  • 我认为正在发生的事情是这样的:1)y 的临时值存储在某处,2)y 加一,然后 3)y 被分配回临时价值。因此,y 的值实际上从未改变。无论如何,谁有一个完全相同的副本,请随意锤击。

标签: java


【解决方案1】:

正如StackOverflow answer 中所述,后增量通过存储 y 的副本、加 1 并返回副本来工作。这意味着y++的返回值不是y+1,但仍然只有y。由于您使用y++ 覆盖y,因此您实际上只是在说y = y

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 2010-10-03
    • 2014-08-25
    相关资源
    最近更新 更多