Введение в C (Си)
Теория: Switch вместо if/else
Полный доступ к материалам
Switch
В этом уроке разберем, как заменить длинную цепочку if/else if/else на switch.
Для примера возьмем функцию charcode(), которая получает символ и возвращает код:
- Для символа
'a'функция возвращает0. - Для символа
'b'функция возвращает1. - Для любого другого символа функция возвращает
3.
Вариант через if else if else
Здесь важно:
- Для сравнения используем
==, а не=. - Оператор
=выполняет присваивание. - Оператор
!=означает "не равно".
Вариант через switch
Ключевое слово case задает отдельные варианты, а default задает ветку для всех остальных значений.
Почему важен break
В switch есть важная особенность: если не поставить break, выполнение "проваливается" в следующий case.
Пример с ошибкой:
Если передать 'a', результатом все равно станет 3, потому что выполнятся все ветки подряд.
Правильный вариант:
Теперь поведение корректное:
- Для символа
'a'функция возвращает0. - Для символа
'b'функция возвращает1. - Для любого другого символа функция возвращает
3.
Итоги
- Конструкция
switchудобна для выбора из нескольких конкретных значений. - Почти в каждом
caseнуженbreak, чтобы не было fallthrough. - Ветка
defaultпокрывает все остальные значения.