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

在switch语句中使用continue
EN

Stack Overflow用户
提问于 2010-01-27 20:24:21
回答 4查看 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

回答 4

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用户

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

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

票数 21
EN

Stack Overflow用户

发布于 2010-01-27 21:00:27

它在语法上是正确的,在风格上也是正确的。

好的风格要求每条case:语句都应该以以下其中一项结尾:

代码语言:javascript
复制
 break;
 continue;
 return (x);
 exit (x);
 throw (x);
 //fallthrough

此外,在case (x):之后立即使用

代码语言:javascript
复制
 case (y):
 default:

是允许的-捆绑几个具有完全相同效果的案例。

其他任何东西都被怀疑是错误的,就像if(a=4){...}一样,当然你需要闭合循环(whilefordo...while)才能让continue工作。它不会单独循环回case()。而是像这样的构造:

代码语言:javascript
复制
while(record = getNewRecord())
{
    switch(record.type)
    {
        case RECORD_TYPE_...;
            ...
        break;
        default: //unknown type
            continue; //skip processing this record altogether.
    }
    //...more processing...
}

好的,...is。

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

https://stackoverflow.com/questions/2146763

复制
相关文章

相似问题

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