本帖最后由 李志卫 于 2013-3-6 04:34 编辑
- public static void main(String[] args)
- {
- int x=0, count=0;
-
- while(x<=100)
- {
- System.out.println("..X.."+x);
- count += count+1;
- System.out.println(count);
- x++;
- }
-
- System.out.println(count);//这里竟然输出-1???
-
- }
复制代码 看代码的结果 你会发现当x=30的时候 count的值为2147483647,这个值就是带符号int的最大值
x=31时 count会超过int的最大值,相加后,硬盘上这个int地址的的四个字节二进制为1111....111111. 转为十进制就是count=-1。
剩下的循环继续 当count=-1, count+=count+1; count恒等于-1.
所以最后count=-1.
|