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