continue语句如何在C中进行for循环?

时间:2015-10-16 09:28:43

标签: c for-loop while-loop

我在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是否应该从头开始运行?

3 个答案:

答案 0 :(得分:4)

continue将导致跳过封闭的forwhile循环体的剩余部分。在您的情况下,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 *缺失。