首页 > 解决方案 > c++ switch 语句 - 在 case 之间跳转

问题描述

在 C++ 中,我可以执行以下代码吗?

在特定情况下,如果满足某些条件,我可以跳转到另一个案例吗?

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

标签: c++

解决方案


不,不是。你能得到的最接近的东西是有条件的失败。

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更好的解决方案是为每个任务编写一个函数,并且只使用每个案例来调用适当的函数。


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


推荐阅读