为什么这是一个无限循环?

时间:2011-02-18 13:08:07

标签: java

  

可能重复:
  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循环?

3 个答案:

答案 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);