[英]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.