我有这段代码......
for(int i=0; i<10 ; ) {
i = i++;
System.out.println("Hello World");
}
输出:
Hello World
Hello World
Hello World...
循环将无限重复,因为i
在循环的每次迭代后都保持0
。
我认为这个表达式i = i++;
是多余的...就像这个i=(i=i+1);
一样,但它仍然是0
所以它是如何工作的?
答案 0 :(得分:0)
i = i++;
是一个棘手的构造,它真正做的是如下:
int iOld = i;
i = i + 1;
i = iOld;
首先,i的值被压入堆栈。然后,变量i递增。最后,弹出堆栈顶部的值并将其分配给i。最终结果是没有任何反应 - a smart optimizer could remove the whole statement.