Несколько операторов для оператора вопросительного знака

У меня есть две переменные

int a, b ;

a а также b может иметь любое значение из 03 и должно быть несколько предложений для каждого условия, основанного на значениях a и b.

Я использовал вложенные ключи:

switch(a)
{
case go:
{
switch(b)
{
case go: {...}
...
case write: {...}
}
}
...
case 3:
{
...
}
}

Также у меня есть

enum

{
go = 0 ;
wait =1 ;
read = 2;
write =3 ;
}

У меня есть очень большой вложенный переключатель, чтобы проверить все условия 4 * 4 = 16

Я хотел бы реализовать, используя знак вопроса ? : оператор

что-то вроде
(a=b==0) ? Do something ? Do something.

Однако у меня есть несколько заявлений, чтобы сделать в каждом условии.

Как мне сделать это с помощью этого? : троичный оператор?

заранее спасибо

0

Решение

Вместо этого вы можете рассмотреть возможность объединения ваших 4х4 блоков переключателей в один 16-позиционный переключатель:

#define SELECT(a, b) ((a) * 4 + (b))

int select = SELECT(a, b);

assert(a >= 0 && a < 4);  // sanity checking - make sure a and b are valid
assert(b >= 0 && b < 4);

switch (select)
{
case SELECT(0, 0):
// ...
break;
case SELECT(0, 1):
// ...
break;
case SELECT(0, 2):
// ...
break;
case SELECT(0, 3):
// ...
break;
case SELECT(1, 0):
// ...
break;

// ...

case SELECT(3, 3):
// ...
break;
}

Обратите внимание, что это нормально работает как в C, так и в C ++. Это также работает независимо от того, a а также b являются intс или enums (обратите внимание, что вы можете использовать фактические метки перечисления в макросе SELECT — вам не нужно использовать литеральные константы).

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector