continue为什么不能用于switch语句

在switch语句中,将case中的break替换为continue,用gcc编译时报错:error: continue statement not within a loop。在网上搜索了些答案,但没有满意的,大家来讨论下吧!

因为coninue只能用于循环语句中,例如 do 、while 、for等循环,switch 不是循环结构,所以能使用。

msdn 注释:

强制转移对最小封闭 do、for 或 while 循环的控制表达式的控制。

备注:

将不会执行当前迭代中的所有剩余语句。 确定循环的下一次迭代,如下所示:

在 do 或 while 循环中,下一个迭代首先会重新计算 do 或 while 语句的控制表达式。

在 for 循环中(使用语法 for(init-expr; cond-expr; loop-expr)),将执行 loop-expr 子句。 然后,重新计算 cond-expr 子句,并根据结果确定该循环结束还是进行另一个迭代。

下面的示例演示了如何使用 continue 语句跳过代码部分并启动循环的下一个迭代。

示例:

#include <stdio.h>
int main()
{
    int i = 0;
    do
    {
        i++;
        printf_s("before the continue\n");
        continue;
        printf("after the continue, should never print\n");
     } while (i < 3);

     printf_s("after the do loop\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-03
continue语句只能用于循环语句中, 作用是跳出本次循环, 执行下一次循环.而break语句用在循环语句中, 作用是跳出循环, 执行后面的语句. 用在switch语句中, 作用是跳出switch语句, 执行后面的语句. 如果将switch语句中每个case中的break注释掉, 则switch中的所有语句都被执行. 查看原帖>>本回答被提问者和网友采纳
相似回答