在我遇到1/2 /等的情况下,是否可以转到默认情况?
switch(num) {
case 1:
if(foo) {
//do something
} else {
//go to default
}
...
...
...
default:
//do something
}
答案 0 :(得分:9)
即使您在num
时更改switch
值,比较值也是之前变量值的值,如果您已输入其中一个case
分支机构无法再次输入default
。
但是你可以做类似
的事情boolean doDefault = false;
switch(num) {
case 1:
if(foo) {
...
}
else {
doDefault = true;
}
break;
}
if(doDefault) {
//do something
}
答案 1 :(得分:2)
您可以编写应该在函数的default
块中发生的逻辑,并在必要时调用它:
void defAction(){
printf("Hello, World!\n");
}
int main() {
int num = 1, foo = 0;
switch(num) {
case 1:
if(foo) {
printf("Goodbye, World!\n");
} else {
defAction();
}
break;
default:
defAction();
}
return 0;
}
请记住,如果案例不使用break;
,则会调用其下方的所有案例(包括default
)。这样,如果您只是突破开关if(foo)
,它将转到default
。
这只是非常有用,如果您想从不超过一个default
跳转到case
,在这种情况下,您将case
放在最后,default
之前。< / p>
谨慎使用/请参阅以下评论
switch(num) {
case 2:
// do sth
break;
case 3:
// do sth
break;
case 4:
// do sth
break;
case 1:
if(foo) {
printf("Goodbye, World!\n");
break;
}
// ELSE don't break, use default
default:
defAction();
}
答案 2 :(得分:1)
不可能,在实时应用程序或任何用例中没有意义,但是如果你想要进行默认操作,则可以通过以下任何方式执行此操作 -
case
不匹配。答案 3 :(得分:1)
可以制作方法
switch(num) {
case 1:
if(foo) {
//do something
} else {
foo();
}
default:
foo();
}
答案 4 :(得分:0)
不,你不能,但你可以调用相同的方法或省略休息。
答案 5 :(得分:0)
你可以把它们置于默认值之前并且不会在结束时制动,然后它会在中断之前执行所有语句,无论是什么情况
答案 6 :(得分:0)
您可以通过以下方式实现这一目标。
假设您需要在案例1,2,8之后转到默认情况,那么您可以在下面编写代码。
CreateParams