logo

C Заява про перемикач

Інструкція switch у C є альтернативою оператору сходової схеми if-else-if, яка дозволяє нам виконувати кілька операцій для різних можливих значень однієї змінної, що називається змінною switch. Тут ми можемо визначити різні оператори в кількох випадках для різних значень однієї змінної.

Синтаксис оператора switch в c мова наведено нижче:

 switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; } 

Правила оператора switch мовою C

  1. The переключити вираз має бути цілого чи символьного типу.
  2. The регістр значення має бути цілим числом або символьною константою.
  3. The регістр значення можна використовувати лише всередині оператора switch.
  4. The оператор розриву у регістрі перемикачів не обов’язково. Це необов'язково. Якщо в регістрі не знайдено оператора break, усі кейси будуть виконані після відповідного регістру. Він відомий як провалюватися стан оператора C switch.

Спробуємо розібратися в цьому на прикладах. Ми припускаємо, що є такі змінні.

 int x,y,z; char a,b; float f; 
Дійсний перемикачНедійсний перемикачДійсний випадокНедійсний регістр
перемикач(x)перемикач (f)випадок 3;корпус 2,5;
перемикач (x>y)перемикач (x+2,5)регістр «а»;випадок х;
перемикач (a+b-2)корпус 1+2;випадок x+2;
перемикач(func(x,y))case 'x'>'y';випадок 1,2,3;

Блок-схема оператора switch у C

потік оператора switch в c

Функціонування оператора switch case

Спочатку обчислюється цілочисельний вираз, указаний у операторі switch. Потім це значення порівнюється одне за одним із постійними значеннями, наданими в різних випадках. Якщо збіг знайдено, тоді виконуються всі оператори, зазначені в цьому регістрі, разом із усіма регістрами, наявними після цього регістру, включаючи оператор за умовчанням. Жодні випадки не можуть мати однакові значення. Якщо відповідний регістр містить інструкцію break, тоді всі регістри, присутні після цього, будуть пропущені, а керування виходить із перемикача. В іншому випадку всі випадки, наступні за відповідним випадком, будуть виконані.

Як працює оператор C switch?

Давайте крок за кроком розглянемо, як працює оператор switch у C:

Розглянемо наступне оператор перемикання :

Програма C:

 #include int main() { int num = 2; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; } return 0; } 

Вихід

 Value is 2 

Покроковий процес:

  1. The номер змінної перемикання оцінюється. В цьому випадку, на одному ініціалізується за допомогою значення 2 .
  2. The оцінене число (2) значення порівнюється з константами, указаними в мітці кожного випадку всередині блок перемикачів .
  3. The оператор перемикання відповідає оціночне значення (2) з константою, зазначеною в другий випадок (випадок 2) . Оскільки є збіг, програма переходить до блоку коду, пов’язаного з відповідний регістр (випадок 2) .
  4. Блок коду, пов'язаний з випадок 2 виконується, який друкує 'Значення 2' до консолі.
  5. The 'перерва' ключове слово присутнє в блоці коду випадок 2 . У результаті програма виривається з оператора switch відразу після виконання блоку коду.
  6. Керування програмою продовжується після оператор перемикання і будь-які твердження після оператор перемикання виконуються. У цьому випадку після перемикання немає операторів, тому програма завершує роботу.
  7. The оператор перемикання оцінив значення в змінна num , знайшов збіг із випадком 2, виконав відповідний блок коду, а потім вийшов з блок перемикачів завдяки наявності в оператор 'break'. .

Приклад оператора switch у C

Давайте розглянемо простий приклад оператора перемикання мови C.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

Вихід

як відключити режим розробника
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

Приклад зміни регістра 2

 #include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } } 

Вихід

 hi 

Ключове слово Break і Default у операторі Switch

Пояснимо та визначимо 'перерва' і ключові слова за замовчуванням у контексті оператора switch разом із прикладом коду та результатом.

1. Розірвати ключове слово:

The ключове слово 'розрив'. використовується в блоці коду кожного case для передчасного завершення оператора switch. Коли програма зустрічає a оператор 'break'. всередині блоку case він негайно виходить з оператор перемикання , запобігаючи виконанню наступних блоків case. The оператор 'break'. має вирішальне значення для уникнення операторів switch' 'провалюватися' поведінка.

приклад:

Давайте візьмемо програму, щоб зрозуміти використання ключове слово break в C.

 #include int main() { int num = 3; switch (num) { case 1: printf('Value is 1
'); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2
'); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3
'); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

Вихід

 Value is 3 

Пояснення:

У цьому прикладі оператор перемикання оцінює значення в змінна num (який 3 ) і зіставляє його з випадок 3 . Блок коду, пов'язаний з випадок 3 виконано, друк 'Значення 3' до консолі. The оператор 'break'. в межах випадок 3 забезпечує вихід програми з оператора switch відразу після виконання цього блоку case, запобігаючи виконанню будь-яких інших випадків.

2. Ключове слово за замовчуванням:

Коли жоден із регістр констант відповідати оцінюваний вираз , він працює як a універсальний випадок . Якщо відповідного регістру не існує та a існує регістр 'за замовчуванням'. , блок коду, пов’язаний з 'за замовчуванням' справа запущена. Він часто використовується для обробки обставин, коли жодна із зазначених ситуацій не стосується наданих вхідних даних.

приклад:

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

 #include int main() { int num = 5; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

Вихід

 Value is not 1, 2, or 3 

Пояснення:

У цьому прикладі оператор перемикання досліджує значення в змінна num (який 5 ). Оскільки жоден регістр не відповідає num, програма виконує блок коду, пов’язаний з регістр 'за замовчуванням'. . The оператор 'break'. всередині регістр 'за замовчуванням'. забезпечує вихід програми з оператор перемикання після виконання 'за замовчуванням' корпусний блок.

Обидва 'перерва' і ключові слова за замовчуванням відіграють важливу роль у управлінні потоком виконання в операторі switch. The оператор 'break'. допомагає запобігти поведінці падіння, в той час як регістр 'за замовчуванням'. забезпечує спосіб обробки невідповідних випадків.

Оператор C Switch є прохідним

У мові C оператор switch є пропускним; це означає, що якщо ви не використовуєте оператор break у регістрі switch, усі випадки після відповідного регістру будуть виконані.

Давайте спробуємо зрозуміти прохідний стан оператора switch на прикладі, наведеному нижче.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10
'); case 50: printf('number is equal to 50
'); case 100: printf('number is equal to 100
'); default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

Вихід

 enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Вихід

 enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Вкладений оператор case switch

Ми можемо використовувати скільки завгодно операторів switch в операторі switch. Такий тип операторів називається вкладеним оператором перемикання випадків. Розглянемо наступний приклад.

 #include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d
',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d
',j); } } printf('Exact value of i is : %d
', i ); printf('Exact value of j is : %d
', j ); return 0; } 

Вихід

 the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20 

Переваги оператора switch:

Є кілька переваг оператор перемикання в C. Деякі основні переваги оператора switch наступні:

    Читабельність і чіткість:The оператор перемикання забезпечує стислий і зрозумілий спосіб висловлення багатостороннє розгалуження в коді. Робота з кількома випадками може зробити код більш упорядкованим і легшим для читання, ніж кілька вкладені оператори if-else .Ефективність:The оператор перемикання загалом є більш ефективним, ніж серія оператори if-else при роботі з кількома умовами. Він працює як d стіл прямого стрибка , що робить його швидшим і оптимізованішим з точки зору часу виконання.Логіка на основі випадків:The оператор перемикання природно підходить для сценаріїв, коли програмі необхідно приймати рішення на основі конкретних значень однієї змінної. Це інтуїтивно зрозумілий і простий спосіб реалізації логіки на основі регістру.

The оператор перемикання підтримує використання регістру за замовчуванням, який служить a універсальний варіант для значень, які не відповідають жодному з наданих випадків. Це випадок за замовчуванням обробляє незвичайні вхідні дані або обставини, які прямо не вказано.

Недоліки оператора switch:

Є кілька недоліків оператор перемикання у C. Деякі основні недоліки оператора switch такі:

    Обмежені вирази:Вираз, який використовується в оператор перемикання має призвести до інтегральне значення (char, int, enum) або сумісний тип даних. Він не може впоратися з більшим складні або непостійні вирази , обмежуючи його гнучкість у деяких сценаріях.Неможливість порівняти діапазони:На відміну від оператори if-else , оператор перемикання не може безпосередньо обробляти діапазони значень. Кожен випадок у операторі switch представляє певне постійне значення, що ускладнює ефективну обробку діапазону значень.Числа з плаваючою комою не підтримуються:The оператор перемикання тільки приймає цілісні типи (цілі числа) і значення від переліки ; він не приймає числа з плаваючою комою. Це не обробляє нецілісні типи даних люблю цілі числа з плаваючою комою , що за певних обставин може бути проблематичним.Наскрізна поведінка: Перемикач операторів мати 'провалюватися' поведінка за замовчуванням, що означає, що якщо регістр не включає a оператор 'break'. , виконання воля 'провалюватися' до наступного блоку регістрів. Якщо не керувати належним чином, це може призвести до небажаної поведінки.Дубльований код:Використовуючи a оператор перемикання за деяких обставин може призвести до дублювання коду, особливо коли численні випадки вимагають однакових дій. Якщо не керувати належним чином, це може призвести до дублювання коду.Вкладені перемикачі можуть стати складними:Маючи справу з вкладені оператори switch , код може стати складним і менш читабельним. Для розуміння та підтримки таких вкладених структур можуть знадобитися додаткові зусилля.