Instrucțiunea switch din C este o alternativă la instrucțiunea ladder if-else-if care ne permite să executăm mai multe operații pentru diferitele valori posibile ale unei singure variabile numite variabilă switch. Aici, putem defini diferite instrucțiuni în mai multe cazuri pentru diferitele valori ale unei singure variabile.
Sintaxa instrucțiunii switch în c limbajul este dat mai jos:
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; }
Reguli pentru declarația switch în limbajul C
- The schimba expresia trebuie să fie de tip întreg sau caracter.
- The valoarea cazului trebuie să fie o constantă întreagă sau caracter.
- The valoarea cazului poate fi folosit numai în interiorul instrucțiunii switch.
- The declarație de pauză în cazul comutatorului nu este obligatoriu. Este optional. Dacă nu există nicio instrucțiune de pauză găsită în caz, toate cazurile vor fi executate prezente după cazul potrivit. Este cunoscut ca cadea prin starea instrucțiunii C switch.
Să încercăm să înțelegem prin exemple. Presupunem că există următoarele variabile.
int x,y,z; char a,b; float f;
Comutator valid | Comutator nevalid | Caz valabil | Caz nevalid |
---|---|---|---|
comutator(x) | comutator (f) | cazul 3; | cazul 2.5; |
comutați (x>y) | comutator(x+2,5) | cazul „a”; | cazul x; |
comutator (a+b-2) | cazul 1+2; | cazul x+2; | |
comutator(functie(x,y)) | cazul 'x'>'y'; | cazul 1,2,3; |
Diagrama de flux a instrucțiunii switch în C
Funcționarea instrucțiunii switch case
În primul rând, este evaluată expresia întreagă specificată în instrucțiunea switch. Această valoare este apoi corelată una câte una cu valorile constante date în diferite cazuri. Dacă se găsește o potrivire, atunci toate instrucțiunile specificate în acel caz sunt executate împreună cu toate cazurile prezente după acel caz, inclusiv instrucțiunea implicită. Nu există două cazuri care pot avea valori similare. Dacă cazul potrivit conține o instrucțiune break, atunci toate cazurile prezente după aceea vor fi sărite și controlul iese din comutator. În caz contrar, toate cazurile care urmează cazului potrivit vor fi executate.
Cum funcționează declarația C switch?
Să trecem prin procesul pas cu pas al modului în care funcționează instrucțiunea switch în C:
Luați în considerare următoarele declarație switch :
Programul 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; }
Ieșire
Value is 2
Proces pas cu pas:
- The comutator variabila num este evaluat. În acest caz, pe unu este inițializată cu valoarea 2 .
- The evaluat num (2) valoare este comparată cu constantele specificate în fiecare etichetă de caz din interiorul bloc comutator .
- The declarație switch se potrivește cu valoare evaluată (2) cu constanta specificată în al doilea caz (cazul 2) . Deoarece există o potrivire, programul sare la blocul de cod asociat cu caz potrivit (cazul 2) .
- Blocul de cod asociat cu cazul 2 se execută, care se imprimă „Valoarea este 2” la consolă.
- The 'pauză' cuvântul cheie este prezent în blocul de cod al cazul 2 . Ca rezultat, programul iese din instrucțiunea switch imediat după executarea blocului de cod.
- Controlul programului continuă după declarație switch , și orice declarații care urmează declarație switch sunt executate. În acest caz, nu există instrucțiuni după comutare, așa că programul se termină.
- The declarație switch a evaluat valoarea variabila num , a găsit o potrivire cu cazul 2, a executat blocul de cod corespunzător și apoi a ieșit din bloc comutator datorită prezenței declarație „break”. .
Exemplu de instrucțiune switch în C
Să vedem un exemplu simplu de declarație de comutare a limbajului 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; }
Ieșire
cum să aruncați șir în int în java
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Exemplu 2 de caz de comutare
#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 '); } }
Ieșire
hi
Pauza și cuvântul cheie implicit în declarația Switch
Să explicăm și să definim 'pauză' și cuvinte cheie „implicite”. în contextul instrucțiunii switch, împreună cu exemplu de cod și ieșire.
1. Rupe cuvânt cheie:
The cuvânt cheie „break”. este utilizat în blocul de cod al fiecărui caz pentru a termina prematur instrucțiunea switch. Când programul întâlnește un declarație „break”. în interiorul unui bloc de carcasă, iese imediat din declarație switch , împiedicând executarea blocurilor de caz ulterioare. The declarație „break”. este esențial pentru evitarea declarațiilor switch' 'cadea prin' comportament.
Exemplu:
Să luăm un program pentru a înțelege utilizarea pauză cheie în 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; }
Ieșire
Value is 3
Explicaţie:
În acest exemplu, declarație switch evaluează valoarea variabila num (care este 3 ) și se potrivește cu cazul 3 . Blocul de cod asociat cu cazul 3 se execută, tipărind „Valoarea este 3” la consolă. The declarație „break”. în cazul 3 asigură că programul iese din instrucțiunea switch imediat după executarea acestui bloc de caz, împiedicând executarea oricăror alte cazuri.
2. Cuvânt cheie implicit:
Când niciunul dintre constante de caz se potrivesc expresie evaluată , funcționează ca a caz-toate . Dacă nu există niciun caz care se potrivește și a cazul „implicit” există , blocul de cod asociat cu 'Mod implicit' cazul este rulat. Este adesea folosit pentru a gestiona circumstanțele în care niciuna dintre situațiile menționate nu se aplică intrării furnizate.
Exemplu:
Să luăm un program pentru a înțelege utilizarea cuvânt cheie implicit în 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; }
Ieșire
Value is not 1, 2, or 3
Explicaţie:
În acest exemplu, declarație switch examinează valoarea variabila num (care este 5 ). Deoarece niciun caz nu se potrivește cu num, programul execută blocul de cod asociat cu caz „implicit”. . The declarație „break”. în interiorul caz „implicit”. se asigură că programul iese din declarație switch după executarea 'Mod implicit' bloc de caz.
Amandoua 'pauză' și cuvinte cheie „implicite”. joacă roluri esențiale în controlul fluxului de execuție în cadrul unei instrucțiuni switch. The declarație „break”. ajută la prevenirea comportamentului de cădere, în timp ce caz „implicit”. oferă o modalitate de a gestiona cazuri nepotrivite.
Declarația C Switch este de tip fall-through
În limbajul C, instrucțiunea switch este fall through; înseamnă că dacă nu utilizați o instrucțiune break în cazul switch, toate cazurile de după cazul potrivit vor fi executate.
Să încercăm să înțelegem starea de cădere a declarației de comutare prin exemplul de mai jos.
#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; }
Ieșire
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
Ieșire
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Declarație imbricată switch case
Putem folosi câte instrucțiuni switch dorim în interiorul unei instrucțiuni switch. Un astfel de tip de instrucțiuni se numește instrucțiuni de tip switch case imbricate. Luați în considerare următorul exemplu.
#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; }
Ieșire
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
Avantajele declarației switch:
Există mai multe avantaje ale declarație switch în C. Câteva avantaje principale ale instrucțiunii switch sunt următoarele:
The declarație switch acceptă utilizarea unui caz implicit care servește ca a opțiunea prinde toate pentru valori care nu se potrivesc cu niciun caz furnizat. Acest caz implicit gestionează intrări neobișnuite sau circumstanțe care nu sunt menționate în mod expres.
Dezavantajele declarației switch:
Există mai multe dezavantaje ale declarație switch în C. Unele dezavantaje principale ale instrucțiunii switch sunt următoarele: