Подтвердить что ты не робот

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

Может кто-нибудь объяснит мне это?

4b9b3361

Ответ 1

Они довольно похожи, но у каждого есть несколько специальных функций.

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

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

    case XXX: {
    } break;
    

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

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

если-иначе

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

Ответ 2

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

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

Ответ 3

Различия между 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 легко редактировать, так как их легко отслеживать.

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

Ответ 4

IF else - используется для принятия решений

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

Ответ 5

Разница между 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 имеет строгую проверку состояния типа, в то время как switch имеет ловушку типа прыжка.

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

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

Ответ 6

Я считаю, что основное отличие состоит в том, что в блоках if-else мы можем тестировать условия. Но это не так точно в коммутаторе