Оператор switch c

Оператор switch призначений для організації вибору з безлічі різних варіантів. Формат оператора наступний:

Вираз, наступне за ключовим словом switch в круглих дужках, може бути будь-яким виразом, допустимими в мові СІ, значення якого повинно бути цілим. Відзначимо, що можна використовувати явне приведення до цілого типу, проте необхідно пам'ятати про ті обмеження і рекомендації, про які говорилося вище.

Значення цього виразу є ключовим для вибору з декількох варіантів. Тіло оператора smitch складається з декількох операторів, позначених ключовим словом case з подальшим сталою-виразом. Слід зазначити, що використання цілого константного виразу є істотним недоліком, властивим розглянутому оператору.

Так як константний вираз обчислюється під час трансляції, воно не може містити змінні або виклики функцій. Зазвичай в якості константного виразу використовуються цілі або символьні константи.

Всі вирази зі сталими в операторі switch повинні бути унікальні. Крім операторів, позначених ключовим словом case, може бути, але обов'язково один, фрагмент позначений ключовим словом default.

Список операторів може бути порожнім, або містити один або більше операторів. Причому в операторі switch не потрібно укладати послідовність операторів в фігурні дужки.

Схема виконання оператора switch наступна:

  • обчислюється вираз в круглих дужках;
  • обчислені значення послідовно порівнюються з константними виразами, наступними за ключовими словами case;
  • якщо одне з константних виразів збігається зі значенням виразу, то управління передається на оператор, позначений відповідним ключовим словом case;

- якщо жоден з константних виразів не дорівнює висловом, то управління передається на оператор, позначений ключовим словом default. а в разі його відсутності управління передається на наступний після switch оператор.

Відзначимо цікаву особливість використання оператора switch: конструкція зі словом default може бути не останньою в тілі оператора switch. Ключові слова case і default в тілі оператора switch істотні тільки при початковій перевірці, коли визначається початкова точка виконання тіла оператора switch. Всі оператори, між початковим оператором і кінцем тіла, виконуються незалежно від ключових слів, якщо тільки якийсь з операторів не передасть управління з тіла оператора switch. Таким чином, програміст повинен сам подбає про вихід з case. якщо це необхідно. Найчастіше для цього використовується оператор break.

Для того, щоб виконати одні й ті ж дії для різних значень виразу, можна помітити один і той же оператор декількома ключовими словами case.

Виконання оператора switch починається з оператора, позначеного case 2. Таким чином, змінна i отримує значення, рівне 6, далі виконується оператор, позначений ключовим словом case 0. а потім case 4, змінна i прийме значення 3, а потім значення -2. Оператор, позначений ключовим словом default, не змінює значення змінної.

Розглянемо раніше наведений приклад, в якому ілюструвалося використання вкладених операторів if, переписаною тепер з використанням оператора switch.

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

Відзначимо, що в тілі оператора switch можна використовувати вкладені оператори switch. при цьому в ключових словах case можна використовувати однакові вирази зі сталими.

1.4.6. оператор break
Оператор break забезпечує припинення виконання самого внутрішнього з об'єднавчих його операторів switch, do, for, while. Після виконання оператора break керування передається оператору, наступному за перерваним.