Оператор switch в c, уроки з

Загальна ідея операторів switch проста: вираз switch має виробляти значення, а кожен випадок (case) перевіряє це значення на рівність. Якщо case збігається з виразом switch, то виконуються інструкції після рядка case. Якщо case не відповідає вираженню switch, то виконуються інструкції після випадку default (якщо він взагалі вказано).

Через свою реалізації, оператори switch зазвичай більш ефективні, ніж ланцюжка if-else.

Давайте розглянемо це більш детально.

початок switch

Спочатку використовується ключове слово switch. за яким слід вираз, з яким ми хочемо працювати. Зазвичай цей вислів є тільки одну змінну, але це може бути і щось більш складне, наприклад nX + 2 або nX - nY. Єдине обмеження до цього вираз - воно повинно бути інтегрального типу (т. Е. Char, short, int, long, long long або enum). Змінні типу з плаваючою комою або НЕ інтегральні типи використовуватися не можуть.

Після висловлення switch ми оголошуємо блок. Усередині блоку ми використовуємо labels для визначення всіх значень, які ми хочемо перевіряти на відповідність з виразом. Існує два типи лейблів.

лейбли case

Перший вид лейбла - це case (кейс). який оголошується з використанням ключового слова case і має константний вираз. Константне вираз - це те, яке виробляє константне значення - іншими словами: або літерал (наприклад, 5), або перерахування (наприклад, COLOR_RED), або константу (наприклад, змінна x, яка була оголошена як const int).

Константне вираз, що знаходиться після ключового слова case перевіряється на рівність з виразом, що знаходяться після ключового слова switch. Якщо вони збігаються, то тоді виконується код після рядка case.

Варто відзначити, що всі вирази case повинні виробляти унікальні значення. Тобто ви не зможете зробити так:

У разі, якщо «p» буде цифрою ASCII, то виконається перший стейтмент після case: return true.

Case default (лейбл за замовчуванням)

Другий тип лейбла - це лейбл за замовчуванням (або просто default case), який оголошується з використанням ключового слова default. Код під цим лейблом виконується, якщо жоден з кейсів не відповідає вираженню switch. Лейбл за замовчуванням є необов'язковим. В одному switch-е може бути тільки один default. Зазвичай його оголошують останнім в блоці switch.

В наведеному вище прикладі, якщо «p» не є цифрою ASCII, то тоді виконується лейбл за замовчуванням і повертається false.

Виконання switch і fall-through

Одна з найбільш каверзних речей в switch і case - це послідовність виконання коду. Коли case збігся (або виконується default), то виконання починається з першого стейтмента, який знаходиться після відповідного кейса і триває до тих пір, поки не буде виконано одну з наступних умов завершення:

Досягнуто кінець блоку switch.

Виконується оператор return.

Виконується оператор goto.

Виконується оператор break.

Зверніть увагу, якщо жодного з цих умов завершення не буде, то тоді будуть виконуватися всі кейси після того кейса, який збігся з виразом switch. наприклад:

ТОП СТАТТІ

  • Урок 1. Введення в програмування
  • Яку мову програмування навчав перших? Як заробити?
  • Кращі паблік Вк для програмістів
  • Словник програміста. Сленг, який повинен знати кожен кодер
  • Що робити після установки Windows? встановлюємо програми
  • Як навчитися сліпому набору на клавіатурі?
  • Контакти