在 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
}

不可能,在实时应用程序或任何用例中都没有意义,但如果你想进入默认状态,你可以通过以下任何一种方式做到这一点-

  1. 删除所有中断,而不是在最后默认肉。
  2. 调用 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 : 
  }