it-swarm.com.ru

В чем разница между IF-ELSE и SWITCH?

Может кто-нибудь, пожалуйста, объясните мне это?

27
ahmed

Они очень похожи, но у каждого есть несколько особенностей.

переключатель

  • switch обычно более компактен, чем множество вложенных if else и, следовательно, более читабелен
  • Если вы опустите break между двумя вариантами переключения, вы можете перейти к следующему случаю во многих C-подобных языках. С if else вам понадобится goto (что не очень приятно для ваших читателей ... если язык вообще поддерживает goto).
  • В большинстве языков switch принимает только примитивные типы в качестве ключей и константы в качестве падежей. Это означает, что он может быть оптимизирован компилятором с помощью очень быстрой таблицы переходов.
  • Не совсем понятно, как правильно отформатировать switch. Семантически случаи - это цели перехода (как метки для goto), которые должны быть сброшены влево. Вещи ухудшаются, когда у вас есть фигурные скобки:

    case XXX: {
    } break;
    

    Или фигурные скобки должны идти своими линиями? Должна ли закрывающая скобка идти за break? Насколько это нечитабельно? и т.п.

  • Во многих языках switch принимает только некоторые типы данных.

если еще

  • if допускает сложные выражения в условии, в то время как switch хочет константу
  • Вы не можете случайно забыть break между ifs, но вы можете забыть else (особенно во время cut'n'paste)
  • он принимает все типы данных.
34
Aaron Digulla

Основное отличие состоит в том, что switch отправляет немедленно в соответствующую case, как правило, с помощью индексированного перехода, вместо того, чтобы оценивать все условия, которые потребуются в цепочке if-else, что означает, что код в конце цепочки достигается медленнее, чем код в начале.

Это, в свою очередь, накладывает некоторые ограничения на оператор switch, которого нет в цепочке if-else: он не может обрабатывать все типы данных, и все значения case должны быть постоянными.

2
user207421

Различия между if-else и switch

  1. Выражение внутри оператора if решает, выполнять ли операторы внутри блока if или под блоком else. С другой стороны, выражение внутри оператора switch решает, какой случай выполнить.

  2. Оператор if-esle проверяет как равенство, так и логическое выражение. С другой стороны, переключатель проверяет только на равенство.

  3. Оператор if оценивает целочисленный, символьный, указатель или тип с плавающей точкой или логический тип. С другой стороны, оператор switch оценивает только символьный или целочисленный тип данных.

  4. Последовательность выполнения аналогична либо оператору, в котором будет выполняться блок, либо операторам, находящимся в блоке else. С другой стороны, выражение в операторе switch решает, какой случай выполнить, и если вы не применяете оператор break после каждого случая, он будет выполняться до конца оператора switch.

  5. Если выражение внутри, если получится ложным, будет выполнен оператор внутри блока else. Если выражение внутри оператора switch оказывается ложным, то выполняются операторы по умолчанию.

  6. Трудно редактировать операторы if-else, так как утомительно прослеживать, где требуется исправление. С другой стороны, операторы switch легко редактировать, так как их легко отслеживать.

в одном слове мы можем сказать switch действует немного быстрее, чем если бы еще оператор !!!

2
MD RAHIM

Если еще - ИТ используется для принятия решений

Оператор Switch - используется для проверки значения данной переменной по списку значений регистра.

1
Kv mathew

Разница между Switch и оператором if-else ниже:

Это общий синтаксис лестницы if-else:

if (condition1) { //Body of if }
    else if (condition2) { //Body of if }
    else if (condition3) { //Body of if }
else { //default if all conditions return false }

И это общий синтаксис для переключения:

switch ( variable )
{
 case <variable value1>: //Do Something
                                             break;
 case <variable value2>://Do Something
                                             break;
 default: //Do Something
                break;
}

Лестница if-else относится к типу строгой проверки условий, , В то время как переключатель имеет тип перехвата значений.

Преимущества переключения лестниц if-else:

  • Оператор switch работает намного быстрее, чем эквивалентная лестница if-else. Это потому, что компилятор генерирует таблицу переходов для переключателя во время компиляции. Следовательно, во время выполнения вместо проверки того, какой случай удовлетворен, он только решает, какой случай должен быть выполнен.
  • Это более читабельно и по сравнению с операторами if-else.
0
Rizwan Shaikh