无限循环值

时间:2014-09-09 21:35:46

标签: java

x的初始值会使循环无限大?我被告知答案是123,但我不明白怎么做。有人可以解释一下吗?

do 
{
   x = x - 3;
}  while (x < 120);

2 个答案:

答案 0 :(得分:1)

没有值会导致循环成为无限循环。在java中,整数原始值下溢到正数,因此这个循环最终会结束。

举个例子:

int x = Integer.MIN_VALUE;

do {
    x = x - 3; 
    System.out.println(x);
} while (x < 120); 

将输出:

2147483645

答案 1 :(得分:1)

为了进一步理解这一点,小数122的32位整数值是

00000000000000000000000001111010

如果你减少,你最终会变为零:

00000000000000000000000000000000

再减1次,然后到-1:

11111111111111111111111111111111

再次减少并获得-2:

11111111111111111111111111111110

减少一大堆次数并最终达到最大负数:

10000000000000000000000000000000

再次减少并获得最大正数:

01111111111111111111111111111111