int k=0;
for(;;){
System.out.println(k++);}
这是什么写法?
为什么会执行for循环中的代码?
为什么这个for循环是个死循环?

解决方案 »

  1.   

    for循环中没设置任何条件,所以永远为真
      

  2.   

    这种情况,最好在循环中增加一个判断,然后break出来
      

  3.   

    这个就相当于while(true){System.out.println(k++);}了
    死循环  需要写条件跳出循环
      

  4.   

    这个for循环式最省略的一种写法了;
    在这个for循环中,第一句默认定义了k=0;中间的判断语句默认为k<=无穷大;因为循环语句中存在k++,所以就省略了第三个条件了。这样的循环回形成无限循环,因为k是无穷大的....
      

  5.   

    C里比较常见和习惯的死循环写法,可以在里面写循环执行的代码,如果想退出,在退出的地方加一句break;就可以了
      

  6.   

    下面是for 循环的通用格式:for(initialization; condition; iteration) {
    // body
    }
    for循环的执行过程如下。第一步,当循环启动时,先执行其初始化部分。通常,这是设置循环控制变量值的一个表达式,作为控制循环的计数器。重要的是你要理解初始化表达式仅被执行一次。下一步,计算条件condition 的值。条件condition 必须是布尔表达式。它通常将循环控制变量与目标值相比较。如果这个表达式为真,则执行循环体;如果为假,则循环终止。再下一步执行循环体的反复部分。这部分通常是增加或减少循环控制变量的一个表达式。接下来重复循环,首先计算条件表达式的值,然后执行循环体,接着执行反复表达式。这个过程不断重复直到控制表达式变为假。for( ; ; ) {
    // ...
    }这个循环将始终运行,因为没有使它终止的条件。
      

  7.   

    int k=0; 
    for(;;){ 
    System.out.println(k++); } 就好比
    int k=1;
    whele(k!0){
       System.out.println(k++); 
    }
      

  8.   

    for(;;)第一个参数是初始化条件,第二个是结束条件,第三个是每次循环操作。
    你没有结束条件,自然就是死循环了。
      

  9.   

    没加入条件int k=0; 
    for(;;){ System.out.println(k++); 
    if(k == 10)break;
    } 这样就 ok 
      

  10.   

    或者
    for(;k <= 10; k++) {
        // do some work
    }也可以
      

  11.   


    int k=0; 
    for(;;){ //条件没写 等同于无约束
    System.out.println(k++); } 
    是一个死循环
      

  12.   

    好像FOR里面不能用BREAK;吧!JAVA里面可以用?
      

  13.   

    不奇怪 还一种 for each 挺好玩..
      

  14.   

    for(;;)第一个参数是初始化条件,第二个是结束条件,第三个是每次循环操作。 
    你没有结束条件,自然就是死循环了。
      

  15.   

    for(initialization; condition; iteration) {
    // body

    condition 为空 以为真,故无限循环
      

  16.   

    循环分为三种:有限次数的循环;不确定次数循环;死循环。
    有限次数的循环就不介绍了
    不确定次数的循环:(这个比较有用)
    for(int i=0;;i++)
    {
      if(...) break;
      ...
    }死循环:
    只要没有循环终止条件的都是死循环,就不介绍了。
      

  17.   

    谢谢,大家的积极讨论
    相信有很多的人之前也不是很清楚。看了上面的回答,我有一个疑问:
    就是为什么所有人都认为这个是死循环,那我要问了,没有地方指明这是个死循环啊,
    for(;;)我可不可以认为是while(false)呢?
    清楼下的解释一下
      

  18.   

    while(false)是一次都不会运行的。是“死”的,不能循环的。
    for(;;)认为是死循环就是永远运行下去直到java进程死掉才会结束。相当与while(true)
    因为for循环的俩";"之间空的。所以这个条件永远都满足。也就成为死循环了。
    如果for(;false;)才可以认为是while(false)
      

  19.   

      刚学的时候,也遇到过。很经典,又复习了一次for循环。
      

  20.   

    呵呵,回答的人好多啊。 我今天把true 记成ture 想死循环都循不了。
      

  21.   

    最近没时间上啊
    今天就要给客户纳品了。。
    该死的linux却瘫痪了郁闷死我了
    怎么办啊。重装好费时间的。
      

  22.   

    for == four == 4 == ...
      

  23.   

    好像不对吧?int 的最大值是2^31-1的,当k达到这个值时,for循环还会继续走吗?应该会报错的吧?
      

  24.   

    刚才用 short测试了一下,发现了,原来是k++按位运算做的,达到Short.MAX_VAlUE后,再+1,就用-32768开始循环了,程序最终会死循环!我想int应该也会是一样的!不做不知道,另有蹊跷!
      

  25.   

    for(赋值;条件;条件累加)
    for(int i = 0;i<50;i++){
      //到了49的时候就会跳出循环
    }
    如果
     for(;;)
     条件若不填写 那么默认条件是true
     条件永远满足!
    for(int i = 0;;i++)
    也是一样哦
        顶分哦!! 噢耶
       第一次回帖
      

  26.   

    k++
     等价于
    k = k+1;