Использование арифметических и логических операторов в операторе switch

Я хочу использовать логические операторы в операторе switch.
Например:
" x больше 3 и меньше 7 "
Использование его в операторе If.

if(x > 3 && x < 7)
  {
    //something
  }else if(x 11 3 && x < 15){
         // anything
  }

Как я могу использовать его в операторе switch.
И как использовать арифметические операторы.
UPDATE
Теперь, как мы используем его в switch. Может нет способа использовать его в коммутаторе.


comment
Что это за язык? JavaScript? С#? Джава? С?   -  person Mike Christensen    schedule 12.11.2013
comment
Я считаю, что case: выражения должны быть постоянными. Итак, правильный способ — использовать оператор if.   -  person Mike Christensen    schedule 12.11.2013
comment
Мой вопрос в том, можем ли мы использовать выражение в переключателе или нет. если да то как???   -  person Axeem    schedule 12.11.2013
comment
Какую бы книгу вы ни использовали для изучения C++, она не очень хорошо справляется со своей задачей. switch принимает выражение. case нет.   -  person Raymond Chen    schedule 13.11.2013
comment
@RaymondChen На самом деле, просто чтобы уточнить, что немного - case может принимать выражение, если это постоянное выражение, которое полностью определено и вычислимо во время компиляции ...   -  person twalberg    schedule 13.11.2013


Ответы (1)


Вы имеете в виду что-то вроде этого?

switch (some_var)
{ case 4 : // fall through
  case 5 : // fall through
  case 6 : do_something();
          break;
  default : do_something_else();
           break;
}

Это уродливо и становится хуже, чем больше диапазон, который вы хотите охватить, но поскольку switch cases должны быть константами, это один из способов сделать это.

Другой способ:

switch ((some_var > 3) && (some_var < 7))
{ case 0: do_something_else(); break;
  default: do_something(); break;
}

Но это сработает только в том случае, если у вас есть ровно один диапазон, который вы хотите протестировать. Есть и другие способы, если у вас есть набор интервалов одинакового размера, которые расположены на одинаковом расстоянии друг от друга, используя некоторую базовую арифметику, но нам нужно знать немного больше о конкретных проблемах, которые вы пытаетесь решить. ..

Откровенно говоря, я думаю, что конструкция if - лучшее решение...

person twalberg    schedule 12.11.2013