Оператор переключения позволяет проверять переменную на соответствие нескольким значениям. Каждое из этих значений называется случаем . Как только соответствующий случай найден, выполняется его конкретный блок кода. Это альтернатива более распространенному оператору if-else .
Синтаксис
switch (выражение) {case constant_1://Код, который будет выполняться, если выражение == constant_1 break; case constant_2://Код для выполнения, если выражение == constant_2; перерыв; default://регистр по умолчанию является необязательным//Код, который будет выполняться, если ни один из вариантов не соответствует.}
Rules
Есть некоторые правила следует помнить при написании операторов переключения:
- Выражение
- У вас может быть любое количество падежей, но не должно быть дубликатов. Операторы switch также могут быть вложены друг в друга.
- Необязательный случай
default
выполняется, когда ни один из указанных выше случаев не совпадает. - Оператор
break
используется для прерывания потока управления после выполнения блока case. Хотя это необязательно, без него все последующие кейсы после совпадающего кейса также будут выполнены. Рассмотрите приведенный ниже код, чтобы получить более четкое представление:
Поток
Следующая диаграмма иллюстрирует поток управления в коммутаторе:
Примеры
Начиная с var = 10
, элемент управления перешел в блок case 10
— но без любых разрывов, поток не прерывается, и все последующие операторы case также печатаются.
Попробуйте раскомментировать операторы break
и запишите результат. Не стесняйтесь экспериментировать со значением var
.
Примечание: A
break
не требуется после случаяdefault
. Это связано с тем, что элемент управления в любом случае естественным образом выйдет из оператораswitch
.
int main () {int var = 10; switch (var) {case 5: printf ("Случай 1 выполнен."); //перерыв; case 10: printf («Случай 2 выполнен.»); //перерыв; case 15: printf («Случай 3 выполнен.»); //перерыв; case 20: printf («Случай 4 выполнен.»); //перерыв; по умолчанию: printf ("Выполняется случай по умолчанию. ");}}
Вы можете использовать char
для выражения переключения и регистров. В приведенном ниже коде option
соответствует case 'b'
, следовательно, его блок case выполнен.
int main () {char option = 'b'; switch (option) {case 'a': printf ("Случай попадания."); break; case 'b': printf ("Случай b ударил. "); break; case 'c': printf (" Case c hit. "); break; default: printf (" Default case hit. ");}}