可能重复:
Java problem-Whats the reason behind and what will be probable output
int i=0;
for(a=0;a<=integer.MAX_VAL;a++)
{
i++;
}
System.out.println(i);
为什么这会导致infite循环?
答案 0 :(得分:6)
每个可能的整数都是<= Integer.MAX_VALUE
for
循环中的条件永远不会为false
。
当a
到达MAX_VALUE
时,a + 1
会溢出并转入MIN_VALUE
。
答案 1 :(得分:2)
for(int a = 0; a <= Integer.MAX_VALUE; a++)
a
等于Integer.MAX_VALUE
后,再次递增,这是溢出。退出条件(a
大于Integer.MAX_VALUE
)将永远不会发生:
Integer.MAX_VALUE + 1 = -2147483648
答案 2 :(得分:0)
将条件更改为LESS THAN,然后循环应该完全执行Integer.MAX_VAL迭代。
int i=0;
for(a=0;a<integer.MAX_VAL;a++)
{
i++;
}
S.O.P(i);