Как использовать логический оператор в регистре? - PullRequest
5 голосов
/ 24 января 2010

Я просто не понимаю, как использовать логический оператор внутри оператора switch

switch (expression) {
        case > 20:
            statements
            break;
        case < -20:
            statements
            break;
    }

Редактировать
Я не хочу утверждения If ().

Ответы [ 2 ]

10 голосов
/ 24 января 2010

Вы не можете. Используйте if() ... else ....

Ближайшая вещь, доступная тому, что вы хотите, использует расширение GCC и, таким образом, является нестандартной. Вы можете определить диапазоны в операторах case вместо просто значения:

switch(foo)
{
    case 0 ... 20: // matches when foo is inclusively comprised within 0 and 20
         // do cool stuff
         break;
}

Однако вы не можете использовать это, чтобы сопоставить что-либо под определенным значением. Это должно быть в точном диапазоне. Switch es может использоваться только для замены оператора сравнения на константу и не может использоваться для чего-то большего.

5 голосов
/ 24 января 2010
switch ((expression) > 20) {
        case true:
            statements
            break;
        case false:
        default:
            statements
            break;
    }

Что .. Вы хотите больше, чем 1 логическое значение в случае? Вы могли бы сделать это

int ii = ((expression) > 20) + 2 * ((expression) < -20);
switch (ii) {
        case 1:
            statements
            break;
        case 2:
            statements
            break;
    }

Это, IMO довольно плохой код, но это то, что вы просили ...

Просто используйте оператор if, в долгосрочной перспективе вам будет лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...