Операторът switch в C е алтернатива на оператора if-else-if, който ни позволява да изпълняваме множество операции за различните възможни стойности на една променлива, наречена switch variable. Тук можем да дефинираме различни изрази в множество случаи за различните стойности на една променлива.
Синтаксисът на оператора 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
- The превключване на израза трябва да бъде от тип цяло число или знак.
- The стойност на случай трябва да е цяло число или символна константа.
- The стойност на случай може да се използва само в оператора switch.
- The изявление за прекъсване в случай на превключване не е задължително. Не е задължително. Ако в случая не е намерен оператор за прекъсване, всички случаи ще бъдат изпълнени присъстващи след съответстващия случай. Известен е като пропадам състоянието на оператора за превключване на C.
Нека се опитаме да го разберем чрез примерите. Предполагаме, че има следните променливи.
int x,y,z; char a,b; float f;
Валиден превключвател | Невалиден превключвател | Валиден случай | Невалиден регистър |
---|---|---|---|
превключвател(x) | превключвател (f) | случай 3; | случай 2.5; |
превключвател (x>y) | превключвател (x+2,5) | случай 'а'; | случай x; |
превключвател (a+b-2) | случай 1+2; | случай x+2; | |
превключвател(функция(x,y)) | case 'x'>'y'; | случай 1,2,3; |
Блок-схема на израза switch в C
Функциониране на оператора за превключване на случай
Първо се оценява целочисленият израз, зададен в командата switch. След това тази стойност се съпоставя една по една с постоянните стойности, дадени в различните случаи. Ако бъде намерено съвпадение, всички оператори, посочени в този случай, се изпълняват заедно с всички налични случаи след този случай, включително оператора по подразбиране. Няма два случая с подобни стойности. Ако съвпадащият случай съдържа израз за прекъсване, тогава всички налични случаи след това ще бъдат пропуснати и контролата излиза от превключвателя. В противен случай всички случаи след съответстващия случай ще бъдат изпълнени.
Как работи операторът 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
Процес стъпка по стъпка:
- The променлива за превключване номер се оценява. В такъв случай, никой се инициализира с стойност 2 .
- The оценено число (2) стойност се сравнява с константите, посочени във всеки етикет за случай вътре в превключвател блок .
- The изявление за превключване съвпада с оценена стойност (2) с константата, посочена в втори случай (случай 2) . Тъй като има съвпадение, програмата преминава към кодовия блок, свързан с съответстващ случай (случай 2) .
- Кодовият блок, свързан с случай 2 се изпълнява, което отпечатва „Стойността е 2“ към конзолата.
- The 'прекъсване' ключова дума присъства в кодовия блок на случай 2 . В резултат на това програмата излиза от командата за превключване веднага след изпълнение на кодовия блок.
- Контролът на програмата продължава след изявление за превключване и всякакви изявления след изявление за превключване се изпълняват. В този случай няма оператори след превключването, така че програмата се прекратява.
- The изявление за превключване оцени стойността на променлива бр , намери съвпадение със случай 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 ключова дума 'break' се използва в рамките на кодовия блок на всеки случай за преждевременно прекратяване на командата switch. Когато програмата срещне a 'break' изявление вътре в блок случай, той незабавно излиза от изявление за превключване , предотвратявайки изпълнението на последващи блокове на случаи. The 'break' изявление е от решаващо значение за избягване на изявления за превключване 'пропадам' поведение.
Пример:
Нека вземем програма, за да разберем използването на 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
Обяснение:
В този пример, изявление за превключване оценява стойността на променлива бр (кое е 3 ) и го съпоставя с случай 3 . Кодовият блок, свързан с случай 3 се изпълнява, печат „Стойността е 3“ към конзолата. The 'break' изявление в рамките на случай 3 гарантира, че програмата излиза от оператора switch веднага след изпълнението на този блок case, предотвратявайки изпълнението на други случаи.
2. Ключова дума по подразбиране:
Когато никой от case константи съответства на оценен израз , той работи като 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
Обяснение:
В този пример, изявление за превключване изследва стойността на променлива бр (кое е 5 ). Тъй като нито един регистър не съответства на num, програмата изпълнява кодовия блок, свързан с случай 'по подразбиране'. . The 'break' изявление вътре в случай 'по подразбиране'. гарантира, че програмата излиза от изявление за превключване след изпълнение на 'по подразбиране' калъф блок.
И двете 'прекъсване' и ключови думи по подразбиране играят съществена роля в контролирането на потока на изпълнение в рамките на команда switch. The 'break' изявление помага за предотвратяване на поведението на падане, докато случай 'по подразбиране'. осигурява начин за обработка на несравними случаи.
Изявлението за превключване C е пропускателно
В езика C операторът за превключване е пропусклив; това означава, че ако не използвате оператор break в case 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
Изявление за случай на вложен превключвател
Можем да използваме толкова оператори за превключване, колкото искаме в израз за превключване. Такъв тип изрази се наричат вложени оператори за случай на превключване. Помислете за следния пример.
#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 изявление за превключване поддържа използването на случай по подразбиране, който служи като a опция за обхващане на всички за стойности, които не съответстват на нито един от предоставените случаи. Това случай по подразбиране обработва необичайни входове или обстоятелства, които не са изрично посочени.
Недостатъци на оператора switch:
Има няколко недостатъка на изявление за превключване в C. Някои основни недостатъци на командата switch са следните: