百度了下,java int型范围:-2147483648~2147483647当i=2147483647时,此时表示成2进制,就是01111...1(1个0,31个1),再+1就变成1000...0(31个0),因为最高位为符号位,因此此时这个数是一个负数的补码形式,表示成十进制就是-2147483648,它小于a,于是一直循环下去,永远得不到2147483648的。

解决方案 »

  1.   

    额,这里错了,i<=a;怎么可能嘛,是i<=a-1
      

  2.   

    int类型中最大的正整数为2147483647,所以int类型的i不可能大于a=2147483647,int类型的数值范围为;-2147483648到2147483647,当2147483647再加一时就变为最小值-2147483648。就好比12点过后时针又重新转回来到1点
      

  3.   

    楼主是在学习j2se么,推荐杜聚斌视频、、
      

  4.   

    public class FunnyNumber {    public static void main(String[] args) {        int a = Integer.MIN_VALUE;
            System.out.println( (a < 0) && (a == -a) );        System.out.println( Double.NaN == Double.NaN );        Integer m = 123;
            Integer n = 123;
            System.out.println( m == n );        Integer p = 456;
            Integer q = 456;
            System.out.println( p == q );        float num = 0x1.04p3f;
            System.out.println( num );
        }
    }