首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在switch语句中使用continue

在switch语句中使用continue
EN

Stack Overflow用户
提问于 2010-01-27 20:24:21
回答 6查看 133.3K关注 0票数 108

我想从switch语句的中间跳到以下代码中的循环语句:

代码语言:javascript
复制
while (something = get_something())
{
    switch (something)
    {
    case A:
    case B:
        break;
    default:
        // get another something and try again
        continue;
    }
    // do something for a handled something
    do_something();
}

这是使用continue的有效方式吗?switch语句会忽略continue语句吗?在这里,C和C++在行为上有区别吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-27 20:34:22

这很好,continue语句与封闭循环相关,并且您的代码应该等价于(避免这样的跳转语句):

代码语言:javascript
复制
while (something = get_something()) {
    if (something == A || something == B)
        do_something();
}

但是,如果您希望break像您的注释所建议的那样退出循环(它总是再次尝试另一个东西,直到计算结果为false),那么您将需要一个不同的结构。

例如:

代码语言:javascript
复制
do {
    something = get_something();
} while (!(something == A || something == B));
do_something();
票数 61
EN

Stack Overflow用户

发布于 2013-11-16 22:25:05

是,switch语句将忽略continue,并将转到要测试的循环的条件。我想分享一下Ritchie从C编程语言参考中摘录的内容:

continue语句与break相关,但使用频率较低;它导致封闭的forwhiledo循环的下一次迭代开始。在whiledo中,这意味着测试部分立即执行;在for中,控制传递到增量步骤。

continue语句仅适用于循环,不适用于switch 语句。循环内的continue switch 内的continue会导致下一次循环迭代。

对于C++,我不确定这一点。

票数 23
EN

Stack Overflow用户

发布于 2010-01-27 20:26:13

是的,它很好-就像在if语句中使用它一样。当然,您不能使用break从交换机内部中断循环。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2146763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档