logo

C Brytererklæring

Switch-setningen i C er et alternativ til if-else-if ladder-setningen som lar oss utføre flere operasjoner for de forskjellige mulige verdiene til en enkelt variabel kalt switch-variabel. Her kan vi definere forskjellige utsagn i flere tilfeller for de forskjellige verdiene til en enkelt variabel.

Syntaksen til switch-setningen i c språk er gitt 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-setning på C-språk

  1. De bytte uttrykk må være av en heltalls- eller tegntype.
  2. De saksverdi må være et heltall eller en tegnkonstant.
  3. De saksverdi kan bare brukes i switch-setningen.
  4. De bryte uttalelse i bryter tilfelle er ikke must. Det er valgfritt. Hvis det ikke finnes noen brudderklæring i saken, vil alle sakene bli henrettet tilstede etter den matchede saken. Det er kjent som faller gjennom tilstanden til C-brytersetningen.

La oss prøve å forstå det med eksemplene. Vi antar at det er følgende variabler.

 int x,y,z; char a,b; float f; 
Gyldig bryterUgyldig bryterGyldig sakUgyldig sak
bryter (x)bryter (f)tilfelle 3;tilfelle 2.5;
bryter(x>y)bryter(x+2,5)tilfelle 'a';tilfelle x;
bryter(a+b-2)tilfelle 1+2;tilfelle x+2;
bryter(func(x,y))sak 'x'>'y';tilfelle 1,2,3;

Flytskjema for brytersetning i C

flyt av brytersetning i c

Funksjon av brytersaksuttalelse

Først blir heltallsuttrykket spesifisert i switch-setningen evaluert. Denne verdien matches så en etter en med de konstante verdiene gitt i de forskjellige tilfellene. Hvis et samsvar blir funnet, blir alle setningene spesifisert i det tilfellet utført sammen med alle tilfellene som er tilstede etter den saken, inkludert standardsetningen. Ingen to tilfeller kan ha lignende verdier. Hvis den matchede saken inneholder en break-setning, vil alle tilfellene som er tilstede etter det bli hoppet over, og kontrollen kommer ut av bryteren. Ellers vil alle sakene etter den matchede saken bli utført.

Hvordan fungerer C switch-setningen?

La oss gå gjennom trinn-for-trinn-prosessen for hvordan switch-setningen fungerer i C:

Vurder følgende bytte uttalelse :

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; } 

Produksjon

 Value is 2 

Trinn-for-trinn prosess:

  1. De bytte variabel num blir evaluert. I dette tilfellet, på en er initialisert med verdi 2 .
  2. De evaluert num (2) verdi sammenlignes med konstantene spesifisert i hvert enkelt tilfelle etiketten inne i bryterblokk .
  3. De bytte uttalelse samsvarer med evaluert verdi (2) med konstanten spesifisert i andre tilfelle (tilfelle 2) . Siden det er en match, hopper programmet til kodeblokken knyttet til matchende sak (tilfelle 2) .
  4. Kodeblokken knyttet til sak 2 blir utført, som skriver ut 'Verdien er 2' til konsollen.
  5. De 'gå i stykker' nøkkelord er til stede i kodeblokken til sak 2 . Som et resultat bryter programmet ut av switch-setningen umiddelbart etter utføring av kodeblokken.
  6. Programkontrollen fortsetter etter at bytte uttalelse , og eventuelle uttalelser som følger bytte uttalelse blir henrettet. I dette tilfellet er det ingen uttalelser etter byttet, så programmet avsluttes.
  7. De bytte uttalelse evaluerte verdien av variabelt antall , fant et samsvar med tilfelle 2, utførte den tilsvarende kodeblokken og avsluttet deretter bryterblokk på grunn av tilstedeværelsen av 'pause' uttalelse .

Eksempel på en switch-setning i C

La oss se et enkelt eksempel på en C language switch-setning.

 #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; } 

Produksjon

vlc last ned 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 '); } } 

Produksjon

 hi 

Break og standard nøkkelord i Switch-setningen

La oss forklare og definere 'gå i stykker' og 'standard' søkeord i sammenheng med switch-setningen, sammen med eksempelkode og utdata.

1. Pause søkeord:

De «bryte» søkeord brukes i kodeblokken i hvert tilfelle for å avslutte switch-setningen for tidlig. Når programmet møter en 'pause' uttalelse inne i en kasseblokk går den umiddelbart ut av bytte uttalelse , forhindrer utførelse av påfølgende saksblokker. De 'pause' uttalelse er avgjørende for å unngå bytteutsagn' 'faller gjennom' oppførsel.

Eksempel:

La oss ta et program for å forstå bruken av bryte søkeord 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; } 

Produksjon

 Value is 3 

Forklaring:

I dette eksemplet er bytte uttalelse vurderer verdien av variabelt antall (som er 3 ) og matcher den med sak 3 . Kodeblokken knyttet til sak 3 er utført, utskrift 'Verdien er 3' til konsollen. De 'pause' uttalelse innenfor sak 3 sikrer at programmet går ut av switch-setningen umiddelbart etter utføring av denne saksblokken, og forhindrer utførelse av andre tilfeller.

2. Standard søkeord:

Når ingen av kasuskonstanter matche evaluert uttrykk , fungerer det som en oppsamlingssak . Hvis det ikke finnes noen samsvarende sak, og en 'standard' tilfelle eksisterer , kodeblokken knyttet til 'misligholde' saken kjøres. Det brukes ofte til å håndtere omstendigheter der ingen av de angitte situasjonene gjelder for innspillene som er gitt.

Eksempel:

La oss ta et program for å forstå bruken av standard søkeord 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; } 

Produksjon

 Value is not 1, 2, or 3 

Forklaring:

I dette eksemplet er bytte uttalelse undersøker verdien av variabelt antall (som er 5 ). Fordi ingen kasus samsvarer med num, utfører programmet kodeblokken knyttet til 'standard' tilfelle . De 'pause' uttalelse inne i 'standard' tilfelle sikrer at programmet går ut av bytte uttalelse etter å ha utført 'misligholde' saksblokk.

Begge 'gå i stykker' og 'standard' søkeord spille viktige roller i å kontrollere flyten av utførelse i en switch-setning. De 'pause' uttalelse bidrar til å forhindre fall-through-atferd, mens 'standard' tilfelle gir en måte å håndtere uovertrufne saker på.

C Switch-uttalelse er fall-through

I C-språket er switch-setningen fall through; det betyr at hvis du ikke bruker en break-setning i byttesaken, vil alle sakene etter den matchende saken bli utført.

La oss prøve å forstå fall through state of switch-setningen ved hjelp av eksemplet gitt 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; } 

Produksjon

 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 

Produksjon

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

Nested switch case statement

Vi kan bruke så mange switch-setninger vi vil inne i en switch-setning. Slike typer utsagn kalles nestede byttetilfeller. Tenk på 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; } 

Produksjon

 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 

Fordeler med switch-setningen:

Det er flere fordeler med bytte uttalelse i C. Noen hovedfordeler med switch-setningen er som følger:

    Lesbarhet og klarhet:De bytte uttalelse gir en kortfattet og grei måte å uttrykke seg på flerveis forgrening i koden. Å håndtere flere saker kan gjøre koden mer organisert og lettere å lese enn flere nestede if-else-setninger .Effektivitet:De bytte uttalelse er generelt mer effektiv enn en serie med if-else uttalelser når du håndterer flere forhold. Det fungerer som en d direkte hoppbord , noe som gjør den raskere og mer optimalisert når det gjelder utførelsestid.Saksbasert logikk:De bytte uttalelse passer naturligvis scenarier der programmet må ta beslutninger basert på spesifikke verdier for en enkelt variabel. Det er en intuitiv og grei måte å implementere case-basert logikk på.

De bytte uttalelse støtter bruk av en standard sak som fungerer som en oppsamlingsalternativ for verdier som ikke samsvarer med noen oppgitte tilfeller. Dette standard tilfelle håndterer uvanlige innspill eller omstendigheter som ikke er uttrykkelig angitt.

Ulemper med switch-setningen:

Det er flere ulemper med bytte uttalelse i C. Noen av hovedulempene med switch-setningen er som følger:

    Begrensede uttrykk:Uttrykket som brukes i bytte uttalelse må resultere i en integralverdi (char, int, enum) eller en kompatibel datatype. Den klarer ikke mer komplekse eller ikke-konstante uttrykk , begrenser det fleksibilitet i noen scenarier.Manglende evne til å sammenligne områder:I motsetning til if-else uttalelser , den bytte uttalelse kan ikke håndtere verdiområder direkte. Hver sak i switch-setningen representerer en spesifikk konstant verdi, noe som gjør det utfordrende å håndtere en rekke verdier effektivt.Ingen støtte for flytende tall:De bytte uttalelse bare aksepterer integraltyper (heltall) og verdier fra opptegnelser ; den godtar ikke flyttall. Den takler ikke ikke-integrerte datatyper som heltall med flytende komma , noe som kan være problematisk under noen omstendigheter.Fall-through-atferd: Bytt utsagn ha 'faller gjennom' oppførsel som standard som innebærer at hvis en sak ikke inkluderer en 'pause' uttalelse , utførelse vil 'faller gjennom' til følgende saksblokk. Hvis det ikke administreres på riktig måte, kan dette føre til uønsket oppførsel.Duplikatkode:Bruker en bytte uttalelse kan føre til duplikatkode under noen omstendigheter, spesielt når mange tilfeller krever de samme handlingene. Hvis det ikke administreres riktig, kan dette føre til kodeduplisering.Nestede brytere kan bli komplekse:Når man har å gjøre med nestet bytte utsagn , kan koden bli kompleks og mindre lesbar. Det kan kreve ekstra innsats for å forstå og vedlikeholde slike nestede strukturer.