Вопрос по switch-statement, logical-operators, c++ – Как у вас логичен или в случае с частью выключатель устава?

3

Если у вас есть оператор switch и вы хотите, чтобы определенный код запускался, когда значение равно одномуor другой, как ты это делаешь? Следующий код всегда идет в регистр по умолчанию.

#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;
}

Ваш Ответ

5   ответов
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;
}

5 || 2Кстати, оценивает до 1 (илиtrue, так как это логическое выражение), вы можете попробовать это.

9

Как это:

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

Известный как "проваливающийся".

Просто чтобы указать, что причинаdefault случай выполняется в размещенном коде является то, что результат5 || 2 является1 (true). Если вы установитеx в1 в размещенном коде5 || 2 дело будет выполнено (см.http://ideone.com/zOI8Z).

Почему 5 || 2 оценить до 2? Это не логично или ... Celeritas
@Celeritas, этоlogical ИЛИ не поразрядно. Проверьте ссылку в моем ответе.
Извините, я имел в виду 5 || 2 оценивается как 1. Но в двоичном 101 ИЛИ 11 = 111, что составляет 7, а не 1. Верно? Celeritas
@Celeritas, я никогда не говорил, что это оценивает2 и это логично ИЛИ.
3

Пустьswitch fall-through:

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

Вот действительно хорошее чтение о switch / case и их небольшом различии между C / C ++ и некоторой другой информацией о метках (ABCD :), которую вы могли бы знать.

1
case2:
case5:
   //do things
   break;

Похожие вопросы