您如何在逻辑或部分情况下获得开关声明?

Cel*_*tas 3 c++ switch-statement logical-operators

如果你有一个switch语句,并希望在值为一个值另一个值时运行某些代码,你是如何做到的?以下代码始终为默认情况.

#include <iostream>
using namespace std;

int main()
{
    int x = 5;
    switch(x)
    {
        case 5 || 2:
            cout << "here I am" << endl;
            break;
        default:
            cout << "no go" << endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

hmj*_*mjd 9

像这样:

switch (x)
{
case 5:
case 2:
    cout << "here I am" << endl;
    break;
}
Run Code Online (Sandbox Code Playgroud)

被称为"堕落".

只是要指出default在发布的代码中执行案例的原因是5 || 2is 1(true)的结果.如果您设置x1已发布的代码,5 || 2则将执行该案例(请参阅http://ideone.com/zOI8Z).


jro*_*rok 7

让它落空:

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;
}
Run Code Online (Sandbox Code Playgroud)

5 || 2顺便说一句,评估为1(或者true,因为它是一个逻辑表达式),你可以尝试它.