[英]Switch to default case in switch-case
当我遇到大小写1/2 / etc时,是否可以使用默认大小写?
switch(num) {
case 1:
if(foo) {
//do something
} else {
//go to default
}
...
...
...
default:
//do something
}
即使在switch
时更改了num
值,比较的值也是切换开始前的变量值,因此,如果您输入了case
分支之一,则无法再次输入default
。
但是你可以做类似的事情
boolean doDefault = false;
switch(num) {
case 1:
if(foo) {
...
}
else {
doDefault = true;
}
break;
}
if(doDefault) {
//do something
}
您可以编写应该在函数的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
。 仅当您想从不超过一种case
跳转到default
,这才真正有用,在这种情况下,您要将该case
放在default
之前,放在最后。
谨慎使用/请参阅下面的评论
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();
}
不可能,在实时应用程序或任何用例中都没有意义,但是如果您要默认使用,则可以通过以下任何一种方式来实现:
case
都不匹配。 有可能做一个方法
switch(num) {
case 1:
if(foo) {
//do something
} else {
foo();
}
default:
foo();
}
不,您不能,但是您可以调用相同的方法或忽略中断。
您可以将它们放在默认值之前,并且不要在大小写结束时刹车,然后无论情况如何,它将在中断之前执行所有语句
您可以通过以下方式实现此目的。
假设只需要在案例1,2,8之后使用默认案例,那么您可以编写以下代码。
switch(Choice){
case 1 : //do something
case 2 : //do something
case 8 : //do something
default: //to do default operation
break;
case 3 :
case 4 :
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.