在 switch-case 中切换到默认情况
Switch to default case in switch-case
是否可以在我遇到 1/2/等情况时转到默认情况?
switch(num) {
case 1:
if(foo) {
//do something
} else {
//go to default
}
...
...
...
default:
//do something
}
不可能,在实时应用程序或任何用例中都没有意义,但如果你想进入默认状态,你可以通过以下任何一种方式做到这一点-
- 删除所有中断,而不是在最后默认肉。
- 调用 goDefault() 方法的值与任何
case
都不匹配。
即使您在 switch
中更改 num
值,用于比较的值也是变量 在 开始之前的值,因此如果您已进入 case
分支之一,您无法再次进入 default
。
但是你可以这样做
boolean doDefault = false;
switch(num) {
case 1:
if(foo) {
...
}
else {
doDefault = true;
}
break;
}
if(doDefault) {
//do something
}
不可以,但您可以调用相同的方法或省略中断。
你可以把它们放在default之前,不要在case结束时brake,那么不管是什么情况,它都会执行break之前的所有语句
您可以将应该在 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();
}
可以做一个方法
switch(num) {
case 1:
if(foo) {
//do something
} else {
foo();
}
default:
foo();
}
您可以通过以下方式实现。
假设在case 1,2,8之后需要转到default case才可以写下面的代码
switch(Choice){
case 1 : //do something
case 2 : //do something
case 8 : //do something
default: //to do default operation
break;
case 3 :
case 4 :
}
是否可以在我遇到 1/2/等情况时转到默认情况?
switch(num) {
case 1:
if(foo) {
//do something
} else {
//go to default
}
...
...
...
default:
//do something
}
不可能,在实时应用程序或任何用例中都没有意义,但如果你想进入默认状态,你可以通过以下任何一种方式做到这一点-
- 删除所有中断,而不是在最后默认肉。
- 调用 goDefault() 方法的值与任何
case
都不匹配。
即使您在 switch
中更改 num
值,用于比较的值也是变量 在 开始之前的值,因此如果您已进入 case
分支之一,您无法再次进入 default
。
但是你可以这样做
boolean doDefault = false;
switch(num) {
case 1:
if(foo) {
...
}
else {
doDefault = true;
}
break;
}
if(doDefault) {
//do something
}
不可以,但您可以调用相同的方法或省略中断。
你可以把它们放在default之前,不要在case结束时brake,那么不管是什么情况,它都会执行break之前的所有语句
您可以将应该在 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();
}
可以做一个方法
switch(num) {
case 1:
if(foo) {
//do something
} else {
foo();
}
default:
foo();
}
您可以通过以下方式实现。
假设在case 1,2,8之后需要转到default case才可以写下面的代码
switch(Choice){
case 1 : //do something
case 2 : //do something
case 8 : //do something
default: //to do default operation
break;
case 3 :
case 4 :
}