Как работает switch в c

от admin

Как работает switch в c

Конструкция switch/case оценивает некоторое выражение и сравнивает его значение с набором значений. И при совпадении значений выполняет определенный код.:

Конструкция switch имеет следующее формальное определение:

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора сase . И если совпадение будет найдено, то будет выполняться определенный блок сase .

В конце каждого блока сase должен ставиться один из операторов перехода: break , goto case , return или throw . Как правило, используется оператор break . При его применении другие блоки case выполняться не будут.

В данном случае конструкция switch последовательно сравнивает значение переменной name с набором значений, которые указаны после операторов case . Поскольку здесь значение переменной name — строка «Tom», то будет выполняться блок

Соответственно мы увидим на консоли

Если значение переменной name не совпадает ни с каким значением после операторов case , то ни один из блоков case не выполняется. Однако если даже в этом случае нам все равно надо выполнить какие-нибудь действия, то мы можем добавить в конструкцию switch необязательный блок default . Например:

В данном случае никакое из значений после операторов case не совпадает со значением переменной name, поэтому будет выполняться блок default:

Однако если мы хотим, чтобы, наоборот, после выполнения текущего блока case выполнялся другой блок case, то мы можем использовать вместо break оператор goto case :

Возвращение значения из switch

Конструкция switch позволяет возвращать некоторое значение. Для возвращения значения в блоках case может применятся оператор return . Например, определим следующий метод:

В метод DoOperation() передается числовой код операции и два операнда. В зависимости от кода операции над операндами выполнется определенная операция и ее результат возвращается из метода. Для примера при по умолчанию из метода возвращается 0, если код операции не равен 1, 2 или 3.

Затем мы можем вызвать этот метод:

Получение результата из switch

Хотя конструкция switch в примере выше прекрасно работает, тем не менее мы ее можем сократить и получить результат неосредственно из конструкции switch :

Теперь не требуется оператор case , а после сравниваемого значения ставится оператор стрелка => . Значение справа от стрелки выступает в качестве возвращаемоего значения. Кроме того, вместо оператора default используется почерк _. В итоге результат конструкции switch будет присвиваиваться переменной result.

Естестввенно, мы можем сразу возвратить из метода результат без присвоения переменной результата конструкции switch:

Или сделать метод еще короче:

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

Стоит отметить, что при возвращении значения из метода, метод должен в любом случае возвращать значение. Например, следующая версия метода не будет работать

Эта версия метода возвращает значение, если код операции равен 1, 2 или 3. Но что, если будет передано значение 4 или какое-то другое? Поэтому данная версия метода даже не скомпилируется. Поэтому нам надо предусмотреть возвращение значения из метода при всех возможных вариантах. То есть, мы можем, как в примере выше, добавить в конструкцию switch блок default, в котором будет возвращаться значение при всех остальных случаях.

Оператор выбора switch в C(Си)

Оператор выбора switch является очень удобной заменой множественного использования операторов if. Оператор switch сравнивает значение одной переменной с несколькими константами. Основной формат для использования оператора множественного выбора switch case показан — ниже. Значение переменной указанной в условии switch сравнивается со значениями, которые следуют за ключевым словом case . Когда значение в переменной, соответствует значению в строке с оператором case , компьютер продолжит выполнение программы с этого места.

Когда сравниваемое значение в переменной variable совпадет с первым значением оператора case , программа начнет выполнять код, который находится между текущим оператором case и оператором break. Оператор break используется для того, чтобы прерывать ход программы в операторе switch и передавать управление следующему оператору, после switch . Если не использовать оператор break , то, сразу после того, как выполнится один блок кода, программа переключится на выполнения следующего case , даже, если константное значение не будет равно значению в переменной variable . Поэтому, в операторе выбора switch , блоки кода после case всегда должны предваряться оператором break .

Также стоит обратить в нимание на ключевое слово default , оно не является обязательным, но в то же время оно необходимо для обработки неожидынных ситуаций. Например, когда значение переменной не совпадает ни с одним из значений case , в таком случае выполнится код, который находится в ветке default . Это может быть полезно, в случае, если мы не ожидаем, что ниодно из значений case не совпало со значением переменной в условии switch . В таком случае, мы увидем, что сработал код в ветке default .

Чтобы, все ранее сказанное понять и запомнить, давайте перейдем к рассмотрению простой программы с использованием оператора выбора switch . Хотя, возможно этот пример не самый удачный, но в нем наглядно показывается весь функционал оператора switch .

Итак, как же работает этот код? Для начала, мы сделали небольшое меню (строки5 — 10), чтобы как-то информировать пользователя, что необходимо водить в программу. Как вы уже поняли, необходимо ввести число — 1, 2, 3 или 4. В зависимости от введенного числа, программа будет срабатывать поразному. В данном примере очень хорошо видно, что вводимое значение сохраняется в переменную input , и после этого, значение в этой переменной передается в оператор switch , строка 13строках 13 — 29 объявлен оператор множественного выбора switch . Какже он работает? Очень просто, по порядку программа сравнивает переменную input со значениями 1, 2, 3 и 4 . Например, если мы ввели число 3, топрограмма выполнит код, который находится в строках 21-22 , при вводе единицы, программа напечатает сообщение из строки 15.Думаю суть вы уловили. Ну, а, если мы ввели другое число, отличное от заданных, выполнится блок кода в строке 27. Смотрим результат работы программы. Я ввел значение — 3, сегодня буду смотреть — Ходячих!

Читать:
Что значит непрерывно дифференцируемая функция

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

Оператор switch в C#

Оператор switch в C# используется для замены конструкции if. else. Главное его преимущество по сравнению с if. else — чистота и удобочитаемость.

Синтаксис

Оператор switch принимает выражение или переменную и сравнивает его значение со значением каждого case ( value1 , value2 , …). Когда оператор switch находит идентичное значение, выполняется блок кода внутри соответствующего case.

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

Когда оператор switch находит подходящее значение, он также выполняет все нижестоящие блоки case. Это важный нюанс.

Чтобы этого избежать, нужно использовать оператор break в конце каждого блока case . Оператор break завершает выполнение оператора switch , что предотвращает выполнение несоответствующих case.

Пример 1. Используем оператор switch

Вывод:

В этом примере пользователь вводит букву алфавита. Буква, если она заглавная, конвертируется в прописную с помощью метода ToLower() .

После этого оператор switch проверяет букву, которую ввел пользователь, на соответствие а , у , о , ы , и , э , я , ю , ё или е .

Если введенная буква соответствует какому-либо case, программа выводит сообщние «Гласная». Если нет — управление переходит к оператору default , и тогда программа печатает сообщение «Согласная».

Блоки кода всех case с гласными буквами одинаковые, так что мы можем их объединить.

Пример 2. Используем оператор switch с сгруппированными case

Вывод будет таким же, как и у программы выше. В программе выше все case с гласными буквами печатали «Гласная» и завершали выполнение оператора switch .

Хоть оператор switch и делает код более читаемым, но у него есть ограничения. Он работает только со следующими типами данных:

  • примитивные типы данных: bool, char, целые числа;
  • перечисляемые типы данных (Enum);
  • строки;
  • nullable-типы.
Пример 3. Пишем простейший калькулятор, основанный на switch

Вывод:

Эта программа принимает два операнда и оператор, которые вводит пользователь. Затем она производит операцию, которая зависит от введенного оператора.

Ввод данных осуществляется с помощью методов ReadLine() и Read() .

Для выбора нужного оператора программа использует оператор switch . То же самое можно реализовать и с помощью оператора if-else.

C Switch

Instead of writing many if..else statements, you can use the switch statement.

The switch statement selects one of many code blocks to be executed:

Syntax

This is how it works:

  • The switch expression is evaluated once
  • The value of the expression is compared with the values of each case
  • If there is a match, the associated block of code is executed
  • The break statement breaks out of the switch block and stops the execution
  • The default statement is optional, and specifies some code to run if there is no case match

The example below uses the weekday number to calculate the weekday name:

Example

// Outputs "Thursday" (day 4)

The break Keyword

When C reaches a break keyword, it breaks out of the switch block.

This will stop the execution of more code and case testing inside the block.

When a match is found, and the job is done, it’s time for a break. There is no need for more testing.

A break can save a lot of execution time because it "ignores" the execution of all the rest of the code in the switch block.

The default Keyword

The default keyword specifies some code to run if there is no case match:

Example

switch (day) <
case 6:
printf("Today is Saturday");
break;
case 7:
printf("Today is Sunday");
break;
default:
printf("Looking forward to the Weekend");
>

// Outputs "Looking forward to the Weekend"

Note: The default keyword must be used as the last statement in the switch, and it does not need a break.

Related Posts