我在C中有以下代码:
#include <stdio.h>
int main()
{
int i = 1;
while(i)
{
int index = 0;
printf("while begin\n");
for(index = 0; index < 10; index++)
{
if(index == 2)
{
continue;
}
printf("within for\n");
}
printf("while end\n");
}
printf("returned from while");
}
continue
会直接影响for loop
还是while loop
?看起来一旦continue
被调用,for loop
将从头开始运行,while loop
是否应该从头开始运行?
答案 0 :(得分:4)
continue
将导致跳过封闭的for
或while
循环体的剩余部分。在您的情况下,for
是&#34;封闭&#34; continue
的循环和while循环是&#34;封闭&#34; for
循环的范围。
根据(非官方)documentation
continue语句会导致跳转,就像通过goto到结尾一样 循环体(它可能只出现在for循环体内,范围为, while,和do-while循环)。
答案 1 :(得分:0)
考虑它的最简单方法是:“它会回到循环的顶部” continue 之后的任何内容都不会被处理。
答案 2 :(得分:0)
要了解继续是什么,你应该知道什么是休息。
因此,以下代码安静显示了中断和继续的工作原理:
#include <stdio.h>
int main(void){
int hours = 10;
int i=0;
for(i=0;i<hours;i++){
if(i==5){
break;
}
printf("%d ",i);
}
return 0;
}
输出:
0 1 2 3 4
如你所见,当我达到5(i == 5)时,循环中断。
现在让我们来看看如果我们使用相同的代码替换break,会继续发生什么:
#include <stdio.h>
int main(void){
int hours = 10;
int i=0;
for(i=0;i<hours;i++){
if(i==5){
continue;
}
printf("%d ",i);
}
return 0;
}
输出:
0 1 2 3 4 6 7 8 9
你可以看到它没有离开循环(就像使用休息时一样),相反当 i 达到5(i == 5)时忽略身体的其余部分进行循环从最后一次看到 i 的点开始。 数字 5 *缺失。