Switch-satsen i C är en alternativ till if-else-if ladder-sats som gör att vi kan utföra flera operationer för de olika möjliga värdena för en enda variabel som kallas switch-variabel. Här kan vi definiera olika uttalanden i flera fall för de olika värdena för en enskild variabel.
Syntaxen för switch-satsen i c språk ges nedan:
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; }
Regler för switch-sats på C-språk
- De byta uttryck måste vara av heltals- eller teckentyp.
- De fallvärde måste vara ett heltal eller teckenkonstant.
- De fallvärde kan endast användas i switch-satsen.
- De bryta uttalande i växellåda är inte måste. Det är valfritt. Om det inte finns någon paussats i ärendet, kommer alla fall att verkställas efter det matchade ärendet. Det är känt som falla igenom tillståndet för C-switch-satsen.
Låt oss försöka förstå det med exemplen. Vi antar att det finns följande variabler.
int x,y,z; char a,b; float f;
Giltig switch | Ogiltig switch | Giltigt fall | Ogiltigt fall |
---|---|---|---|
switch (x) | switch (f) | fall 3; | fall 2.5; |
switch(x>y) | switch(x+2,5) | fall 'a'; | fall x; |
switch(a+b-2) | fall 1+2; | fall x+2; | |
switch(func(x,y)) | fall 'x'>'y'; | fall 1,2,3; |
Flödesschema för växlingsförklaring i C
Funktion av växelfallsförklaring
Först utvärderas heltalsuttrycket som anges i switch-satsen. Detta värde matchas sedan ett efter ett med de konstanta värden som anges i de olika fallen. Om en matchning hittas exekveras alla satser som anges i det fallet tillsammans med alla fall som finns efter det fallet inklusive standardsatsen. Inga två fall kan ha liknande värden. Om det matchade fallet innehåller en break-sats, kommer alla fall som finns efter det att hoppas över, och kontrollen kommer ut ur switchen. Annars kommer alla ärenden efter det matchade fallet att verkställas.
Hur fungerar C switch-satsen?
Låt oss gå igenom steg-för-steg-processen för hur switch-satsen fungerar i C:
Tänk på följande byta uttalande :
C-program:
#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; }
Produktion
Value is 2
Steg-för-steg process:
- De växla variabel num utvärderas. I detta fall, på ett initieras med värde 2 .
- De utvärderat num (2) värde jämförs med de konstanter som anges i varje falletikett inuti brytarblock .
- De byta uttalande matchar utvärderat värde (2) med den konstant som anges i andra fallet (fall 2) . Eftersom det finns en matchning, hoppar programmet till kodblocket som är associerat med matchande fodral (fall 2) .
- Kodblocket associerat med fall 2 exekveras, som skriver ut 'Värdet är 2' till konsolen.
- De 'ha sönder' nyckelordet finns i kodblocket för fall 2 . Som ett resultat bryter programmet ut ur switch-satsen omedelbart efter exekvering av kodblocket.
- Programkontrollen fortsätter efter byta uttalande , och alla uttalanden som följer byta uttalande avrättas. I det här fallet finns det inga uttalanden efter växlingen, så programmet avslutas.
- De byta uttalande utvärderade värdet av variabel num , hittade en matchning med fall 2, körde motsvarande kodblock och avslutade sedan brytarblock på grund av närvaron av 'bryta' uttalande .
Exempel på en switch-sats i C
Låt oss se ett enkelt exempel på en C language switch-sats.
#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; }
Produktion
3d i autocad
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Switch case exempel 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 '); } }
Produktion
hi
Break och Default nyckelord i Switch-satsen
Låt oss förklara och definiera 'ha sönder' och 'standard' nyckelord i sammanhanget med switch-satsen, tillsammans med exempelkod och utdata.
1. Avbrottssökord:
De 'bryta' nyckelord används inom kodblocket för varje fall för att avsluta switch-satsen i förtid. När programmet stöter på en 'bryta' uttalande inuti ett fallblock lämnar det omedelbart byta uttalande , förhindrar exekvering av efterföljande ärendeblock. De 'bryta' uttalande är avgörande för att undvika switch-satser 'falla igenom' beteende.
Exempel:
Låt oss ta ett program för att förstå användningen av bryt nyckelord i 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; }
Produktion
Value is 3
Förklaring:
I det här exemplet är byta uttalande utvärderar värdet av variabel num (vilket är 3 ) och matchar den med fall 3 . Kodblocket associerat med fall 3 exekveras, utskrift 'Värdet är 3' till konsolen. De 'bryta' uttalande inom fall 3 säkerställer att programmet lämnar switch-satsen omedelbart efter exekvering av detta fallblock, vilket förhindrar exekvering av andra fall.
2. Standardsökord:
När ingen av de fallkonstanter matcha utvärderat uttryck , den fungerar som en catch-all fall . Om det inte finns något matchande fall och a 'standard' fall finns , kodblocket som är associerat med 'standard' ärendet körs. Det används ofta för att hantera omständigheter där ingen av de angivna situationerna gäller den tillhandahållna inmatningen.
Exempel:
Låt oss ta ett program för att förstå användningen av standardsökord i 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; }
Produktion
Value is not 1, 2, or 3
Förklaring:
I det här exemplet är byta uttalande undersöker värdet av variabel num (vilket är 5 ). Eftersom inget fall matchar numret, utför programmet kodblocket som är associerat med 'standard' fall . De 'bryta' uttalande inuti 'standard' fall säkerställer att programmet avslutas byta uttalande efter att ha utfört 'standard' fallblock.
Både 'ha sönder' och 'standard' nyckelord spelar viktiga roller för att kontrollera flödet av exekvering inom en switch-sats. De 'bryta' uttalande hjälper till att förhindra genombrottsbeteende, medan 'standard' fall ger ett sätt att hantera oöverträffade fall.
C Switch-satsen faller igenom
I C-språket är switch-satsen fall through; det betyder att om du inte använder en break-sats i switchfallet kommer alla fall efter matchningsfallet att exekveras.
Låt oss försöka förstå fall through state of switch-satsen genom exemplet nedan.
#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; }
Produktion
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
Produktion
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Kapslad växelfallsbeskrivning
Vi kan använda så många switch-satser som vi vill i en switch-sats. Sådana typer av satser kallas kapslade switchcase-satser. Betrakta följande exempel.
#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; }
Produktion
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
Fördelar med switch-satsen:
Det finns flera fördelar med byta uttalande i C. Några huvudfördelar med switch-satsen är följande:
De byta uttalande stöder att använda ett standardfall som fungerar som en catch-all-alternativ för värden som inte matchar några angivna fall. Detta standardfall hanterar ovanliga uppgifter eller omständigheter som inte uttryckligen anges.
Nackdelar med switch-satsen:
Det finns flera nackdelar med byta uttalande i C. Några huvudsakliga nackdelar med switch-satsen är följande: