繁体   English   中英

c++ switch 语句 - 在 case 之间跳转

[英]c++ switch statement - jump between cases

在C++,我可以做类似下面的代码吗?

在一个具体的case中,如果满足了某些条件,是否可以跳转到另一个case?

switch (tag) {
    case 1: { 
        // do something
        break;
    }
    case 2: {  
        if(){
            //can I somehow jump to case 1?
        }
        break;
    }
}

不,不是真的。 您可以获得的最接近的结果是有条件的失败。

switch (tag) {
    case 2: {  
        // Do things that need to be done for case 2

        if(someCondition){
            // if the condition was met, we stop here   
            // and don't execute case 1!          
            break; 
        }

        // no break at the end, so we fall through to case 1
    }
    case 1: { 
        // do something
        break;
    }
}

但这会很快变得非常混乱并且也非常有限,imo 更好的解决方案是为每个任务编写一个 function 并且只使用每个案例来调用适当的函数。


不, goto是一个非常糟糕的主意,不,你甚至不应该考虑使用它;)

这不是最好的方法,但可以解决您的问题。

switch (tag) {
case 1: { 
    // do something
       case1:
               printf("hello");

    break;
}
case 2: {  
    if(){
        //you can use goto statement
        goto case1;
    }
    break;
}

}

正如一些人指出的那样,您可以使用 goto。 但这不是一个好主意。

你可以做的,我有时也在我的代码中使用它,就是省略 break; 声明并让几个案例执行。 如果您决定这样做,请在那里发表评论,这样将来您(或您的同事)就不会添加“缺失的”休息时间;。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM