为什么for循环变成无限循环?

时间:2017-04-24 15:20:29

标签: c for-loop infinite

为什么下面的代码导致无限循环?

struct Node{
    int value;
    list<Node> listNode;
};

3 个答案:

答案 0 :(得分:2)

因为i在循环检查时永远不等于12 。您在每次循环迭代后执行i++,因此i在检查时始终等于13

您可以完全省略i++部分,或者设置i = 11;来完成同样的事情。 (当然,因为&#34;同样的事情&#34;在这种情况下只需要循环的一次迭代,你首先不需要一个循环。但我认为这只是一个人为的学习练习。)

答案 1 :(得分:1)

i++在循环结束时有效,因此i将成为13

答案 2 :(得分:1)

这是因为for循环在检查循环条件之前递增变量。

此处将for循环重写为while循环的代码:

#include<stdio.h>
 void main()
{
  int i;
  i=0;
  while(i!=12)
  {
     printf("%d\n",i);
     i=12;
     i++;
  }
}

这是它的输出(前几行):

0
13
13
13
...

每次循环时,代码将i设置为12,然后立即将其增加到13,然后再检查条件并重新启动循环。该循环仅在i==12时终止,因此它将永远运行。