java中for(int i= 0; i<=10;i=i++)System.out.print(i);为什么无限输出0?

2024-11-17 16:49:39
推荐回答(4个)
回答1:

好吧,你中奖了。估计没读过那本java解惑的人都解答不了你的问题。
i = i++;
在java中
++是自增去处符,不过呢这里有个这样的机制,在做自增之前,先把i的地址保存起来,假设用变量a保存了这个地址,用变量b保存了自增后的地址。
现在把i变量的拿出来+1,再放回到地址b去。本来单独使用是没有问题,i++,很正常,但如果写成
i=i++问题就来了。
=符号把地址重新指向了。
每次执行后i指向i原来的地址,即a,但是a所在的地址,值并没有变。
这就是你为什么无限输出0的原因。

回答2:

改为for(int i= 0; i<=10;i++)
for(int i= 0; i<=10;i=i++)这句的最后一个i=i++,i就永远是0了,因为i++是下一刻才是变成1,而在下一刻之前还是0,被你赋值给了i,所以i永远是0

回答3:

i=i++,这个使i一直等于0

回答4:

i=i++这样每次i都是0
改成i++