一个简单的语句:
for(int i=0;i<10;i++)
{
    System.out.println(i);
}改成这样下面这样的: for(;;x++)
{
if(x<10)
{
System.out.println(x);
}
}为什么循环不停止,而且在一段时间后输出-2147472773;
-2147472772;等等的这样一堆的数呢?刚学编程,不太明白啊。

解决方案 »

  1.   

    for(;;x++)
    {
      if(x <10)
      {
        System.out.println(x);
      }
      else
      {
        break;
      }
      

  2.   

    x不断增加最后超过int界限 成为了负数
      

  3.   

    因为没有break,x 到了 10 以上之后还没停,之后x加到了int的最大值,在加 1 的话就会变成负的int最大值。(有符号数在计算机中是用补码存储的)
      

  4.   

    int n=2147483647;
    System.out.println(n+1);
    你试下就明白了
      

  5.   

    for(;;x++) 
    {}
    就是个死循环
    所以就不会停了
      

  6.   

    谢谢各位朋友解答。如TYLEO朋友提示,用break语句退出就好了。出现-2147472773这样数字的结果我想应该是lastsweetop 所说的,总之感谢各位朋友。结帖。
      

  7.   

    对了,又想个问题,为什么超出INT范围后,数字又会输出了呢?没有输出语句啊,这是相当于错误提示那种吗?有JDK自动输出的?
      

  8.   

    那个循环没有终止条件啊。
    for的判断语句为空,那么会默认true一直循环,需要循环内部做break中断循环。