为什么下面的代码导致无限循环?
struct Node{
int value;
list<Node> listNode;
};
答案 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
时终止,因此它将永远运行。