Switch-sætningen i C er en alternativ til if-else-if ladder-sætning, som giver os mulighed for at udføre flere operationer for de forskellige mulige værdier af en enkelt variabel kaldet switch-variabel. Her kan vi definere forskellige udsagn i flere tilfælde for de forskellige værdier af en enkelt variabel.
Syntaksen for switch-sætning i c sprog er givet nedenfor:
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 for switch-sætning i C-sprog
- Det skifte udtryk skal være af en heltal- eller tegntype.
- Det sagsværdi skal være et heltal eller en tegnkonstant.
- Det sagsværdi kan kun bruges inde i switch-sætningen.
- Det pauseerklæring i switch tilfælde er ikke must. Det er valgfrit. Hvis der ikke findes en pauseerklæring i sagen, vil alle sagerne blive eksekveret tilstede efter den matchede sag. Det er kendt som falder gennem tilstanden af C switch-sætning.
Lad os prøve at forstå det ved eksemplerne. Vi antager, at der er følgende variabler.
int x,y,z; char a,b; float f;
Gyldig switch | Ugyldig kontakt | Gyldig sag | Ugyldig sag |
---|---|---|---|
switch (x) | skifte(f) | tilfælde 3; | tilfælde 2.5; |
switch(x>y) | switch(x+2,5) | tilfælde 'a'; | tilfælde x; |
switch(a+b-2) | tilfælde 1+2; | tilfælde x+2; | |
switch(func(x,y)) | case 'x'>'y'; | tilfælde 1,2,3; |
Flowchart af switch statement i C
Funktion af switch case statement
Først evalueres heltalsudtrykket angivet i switch-sætningen. Denne værdi matches derefter en efter en med de konstante værdier, der er angivet i de forskellige tilfælde. Hvis der findes et match, udføres alle de sætninger, der er specificeret i det tilfælde, sammen med alle de tilfælde, der er til stede efter den sag, inklusive standardsætningen. Ikke to sager kan have ens værdier. Hvis den matchede sag indeholder en break-sætning, vil alle de tilfælde, der er til stede efter det, blive sprunget over, og kontrollen kommer ud af kontakten. Ellers vil alle sager efter den matchede sag blive eksekveret.
Hvordan virker C switch-sætning?
Lad os gennemgå trin-for-trin-processen for, hvordan switch-sætningen fungerer i C:
Overvej følgende skifte erklæring :
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
Trin-for-trin proces:
- Det skifte variabel antal er vurderet. I dette tilfælde, på en initialiseres med værdi 2 .
- Det vurderet num (2) værdi sammenlignes med de konstanter, der er angivet i hvert tilfælde etiketten inde i skifte blok .
- Det skifte erklæring matcher vurderet værdi (2) med konstanten angivet i andet tilfælde (tilfælde 2) . Da der er et match, springer programmet til den kodeblok, der er knyttet til matchende sag (tilfælde 2) .
- Kodeblokken tilknyttet tilfælde 2 udføres, som udskriver 'Værdien er 2' til konsollen.
- Det 'pause' nøgleord er til stede i kodeblokken for tilfælde 2 . Som følge heraf bryder programmet ud af switch-sætningen umiddelbart efter udførelse af kodeblokken.
- Programstyringen fortsætter efter skifte erklæring , og eventuelle erklæringer efter skifte erklæring bliver henrettet. I dette tilfælde er der ingen udsagn efter skiftet, så programmet afsluttes.
- Det skifte erklæring vurderet værdien af variabelt antal , fandt et match med tilfælde 2, udførte den tilsvarende kodeblok og afsluttede derefter skifte blok på grund af tilstedeværelsen af 'pause' erklæring .
Eksempel på en switch-sætning i C
Lad os se et simpelt eksempel på en C language switch-sætning.
#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
vlc download videoer fra youtube
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Switch case eksempel 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 og standard søgeord i Switch-sætning
Lad os forklare og definere 'pause' og 'standard' søgeord i sammenhæng med switch-sætningen sammen med eksempelkode og output.
1. Pause søgeord:
Det 'break' søgeord bruges inden for kodeblokken i hvert tilfælde til at afslutte switch-sætningen før tid. Når programmet støder på en 'pause' erklæring inde i en kasseblok forlader den straks skifte erklæring , der forhindrer udførelse af efterfølgende sagsblokeringer. Det 'pause' erklæring er afgørende for at undgå switch-udsagn' 'falder gennem' opførsel.
Eksempel:
Lad os tage et program for at forstå brugen af bryde søgeord 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
Forklaring:
I dette eksempel er skifte erklæring vurderer værdien af variabelt antal (som er 3 ) og matcher den med tilfælde 3 . Kodeblokken tilknyttet tilfælde 3 er udført, udskrivning 'Værdien er 3' til konsollen. Det 'pause' erklæring inden for tilfælde 3 sikrer, at programmet afslutter switch-sætningen umiddelbart efter udførelse af denne sagsblok, hvilket forhindrer udførelse af andre tilfælde.
2. Standardsøgeord:
Når ingen af de sagskonstanter matche vurderet udtryk , fungerer det som en catch-all sag . Hvis der ikke findes et matchende tilfælde, og en 'standard' tilfælde eksisterer , kodeblokken forbundet med 'Standard' sagen køres. Det bruges ofte til at håndtere omstændigheder, hvor ingen af de angivne situationer gælder for det leverede input.
Eksempel:
Lad os tage et program for at forstå brugen af standard søgeord 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
Forklaring:
I dette eksempel er skifte erklæring undersøger værdien af variabelt antal (som er 5 ). Fordi ingen tilfælde matcher num, udfører programmet den kodeblok, der er knyttet til 'standard' tilfælde . Det 'pause' erklæring inde i 'standard' tilfælde sikrer, at programmet afslutter skifte erklæring efter at have udført 'Standard' sagsblok.
Både 'pause' og 'standard' søgeord spille væsentlige roller i at kontrollere strømmen af eksekvering i en switch-sætning. Det 'pause' erklæring hjælper med at forhindre gennemfaldsadfærden, mens den 'standard' tilfælde giver en måde at håndtere uovertrufne sager på.
C Switch-erklæringen er faldende
I C-sprog er switch-sætningen fall through; det betyder, at hvis du ikke bruger en break-sætning i switch-tilfældet, vil alle sager efter matchende sag blive udført.
Lad os prøve at forstå fald-gennem-tilstanden af switch-erklæringen ved hjælp af eksemplet nedenfor.
#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
Indlejret switch case statement
Vi kan bruge så mange switch-sætninger, som vi vil, i en switch-sætning. Sådanne typer udsagn kaldes indlejrede switch-tilfældeudsagn. Overvej følgende eksempel.
#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
Fordele ved switch-erklæringen:
Der er flere fordele ved skifte erklæring i C. Nogle hovedfordele ved switch-sætningen er som følger:
Det skifte erklæring understøtter brug af en standardcase, der fungerer som en catch-all mulighed for værdier, der ikke matcher nogen angivne tilfælde. Det her standard tilfælde håndterer usædvanlige input eller omstændigheder, der ikke udtrykkeligt er angivet.
Ulemper ved switch-sætningen:
Der er flere ulemper ved skifte erklæring i C. Nogle væsentlige ulemper ved switch-sætningen er som følger: