How do you have logical or in case part of switch statment?

后端 未结 5 1848
小鲜肉
小鲜肉 2021-01-14 15:21

If you have a switch statement and want certain code to be run when the value is one value or another how do you do it? The following code always goes to the defaul

相关标签:
5条回答
  • 2021-01-14 15:32
    case2:
    case5:
       //do things
       break;
    
    0 讨论(0)
  • 2021-01-14 15:35

    Make it fall through:

    int main()
    {
        int x = 5;
        switch(x)
        {
            case 5:
            // there's no break statement here,
            // so we fall through to 2
            case 2:
                cout << "here I am" << endl;
                break;
            default:
                cout << "no go" << endl;
        }
    
        return 0;
    }
    

    5 || 2, by the way, evaluates to 1 (or true, as it is a logical expression), you can try it.

    0 讨论(0)
  • 2021-01-14 15:47

    Let the switch fall-through:

    switch(x)
    {
        case 2:
        case 5:
            cout << "here I am" << endl;
            break;
        default:
            cout << "no go" << endl;
    }
    
    0 讨论(0)
  • 2021-01-14 15:49

    Here is a really good read about switch/case and their slight difference between C/C++ and some other information about labels (ABCD:) you might like to know.

    0 讨论(0)
  • 2021-01-14 15:50

    Like this:

    switch (x)
    {
    case 5:
    case 2:
        cout << "here I am" << endl;
        break;
    }
    

    Known as "falling through".

    Just to point out that the reason the default case is executed in the posted code is that the result of 5 || 2 is 1 (true). If you set x to 1 in the posted code the 5 || 2 case would be executed (see http://ideone.com/zOI8Z).

    0 讨论(0)
提交回复
热议问题