java 中 for(int i= 0; i<=10;i=i+
+)System.out.print(i);为什么无限输出 0
java 程序如下:
public class Test {
public static void main(String[] args) {
for(int i=0;i<10;i=i++){
System.out.println("i="+i);
}
}
}
结果是无限次输出 i=0;
分析:
i = i++;
在 java 中
++是自增去处符,不过呢这里有个这样的机制,在做自增之前,先把 i 的地址
保存起来,假设用变量 a 保存了这个地址,用变量 b 保存了自增后的地址。
现在把 i 变量的拿出来+1,再放回到地址 b 去。本来单独使用是没有问题,i+
+,很正常,但如果写成
i=i++问题就来了。
=符号把地址重新指向了。
每次执行后 i 指向 i 原来的地址,即 a,但是 a 所在的地址,值并没有变。
这就是你为什么无限输出 0 的原因。