public class InTheLoop {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
for (long i = START; i <= END; i++)
count++;
System.out.println(count);
}
}
把int改成long就可以了,比较科学的说法是当循环到100遍时,i = Integer.MAX_VALUE,下一个循环i++,i由于是int类型,发生上溢,i = Integer.MIN_VALUE,当然小于END,于是i不断变大到Integer.MAX_VALUE,然后上溢变成Integer.MIN_VALUE,周而复始,一直循环下去。
所以问题出在int类型在该场合下表示范围太小,可以把i的类型从int换成long。
|