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

vhmi4jdf  于 2023-04-01  发布在  其他
关注(0)|答案(3)|浏览(160)

在C++中,我可以像下面的代码一样做一些事情吗?
在一个特定的案例中,如果满足某些条件,我可以跳到另一个案例吗?

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

mefy6pfw1#

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

switch (tag) {
    case 1: {
    case1:
        printf("hello");
        break;
    }
    case 2: {
        if () {
            // you can use goto statement
            goto case1;
        }
        break;
    }
}
zsbz8rwp

zsbz8rwp2#

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

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更好的解决方案是为每个任务编写一个函数,并且只使用每个case来调用适当的函数。
不,goto是一个非常糟糕的想法,不,你甚至不应该考虑使用它;)

myzjeezk

myzjeezk3#

正如一些人指出的,你可以使用后藤,但这不是一个好主意。
你可以做的,我也在我的代码中有时使用,是省略break;如果你决定这样做,在那里保留一个注解,这样将来你(或你的同事)就不会添加“missing”break;.

相关问题