logo

C Preklopna izjava

Stavek switch v C je alternativa lestvičnemu stavku if-else-if, ki nam omogoča izvedbo več operacij za različne možne vrednosti ene same spremenljivke, imenovane spremenljivka switch. Tukaj lahko definiramo različne izjave v več primerih za različne vrednosti posamezne spremenljivke.

Sintaksa stavka switch v c jezik je podan spodaj:

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

Pravila za stavek switch v jeziku C

  1. The preklopite izraz mora biti celega ali znakovnega tipa.
  2. The vrednost primera mora biti celo število ali znakovna konstanta.
  3. The vrednost primera lahko uporabite samo znotraj stavka switch.
  4. The izjava o prekinitvi v primeru stikala ni nujno. To ni obvezno. Če v primeru ni najdenega stavka za prekinitev, bodo vsi primeri izvedeni po ujemajočem primeru. Znan je kot padejo skozi stanje stavka C switch.

Poskusimo to razumeti s primeri. Predvidevamo, da obstajajo naslednje spremenljivke.

 int x,y,z; char a,b; float f; 
Veljavno stikaloNeveljavno stikaloVeljavni primerNeveljavna velika in mala črka
stikalo (x)stikalo (f)primer 3;primer 2,5;
stikalo (x>y)stikalo (x+2,5)primer 'a';primer x;
stikalo (a+b-2)primer 1+2;primer x+2;
preklop(func(x,y))case 'x'>'y';primer 1,2,3;

Diagram poteka stavka switch v C

potek stavka stikala v c

Delovanje stavka switch case

Najprej se ovrednoti celoštevilski izraz, podan v stavku switch. Ta vrednost se nato ena za drugo ujema s konstantnimi vrednostmi, podanimi v različnih primerih. Če se najde ujemanje, se izvedejo vsi stavki, podani v tem primeru, skupaj z vsemi primeri, ki so prisotni po tem primeru, vključno s privzetim stavkom. Dva primera ne moreta imeti podobnih vrednosti. Če ujemajoči se primer vsebuje stavek za prekinitev, bodo vsi primeri, ki so prisotni za tem, preskočeni in krmiljenje pride iz stikala. V nasprotnem primeru bodo izvedeni vsi primeri, ki sledijo ujemajočemu primeru.

Kako deluje stavek C switch?

Oglejmo si korak za korakom postopek delovanja stavka switch v C:

Razmislite o naslednjem izjava o preklopu :

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

Izhod

 Value is 2 

Postopek po korakih:

  1. The preklopite spremenljivko št se ocenjuje. V tem primeru, na enem se inicializira z vrednost 2 .
  2. The ocenjena num (2) vrednost se primerja s konstantami, navedenimi v oznaki posameznega primera znotraj stikalni blok .
  3. The izjava o preklopu se ujema z ocenjena vrednost (2) s konstanto, navedeno v drugi primer (2. primer) . Ker obstaja ujemanje, program skoči na kodni blok, povezan z ujemanje velikih in malih črk (2. primer) .
  4. Blok kode, povezan z primer 2 se izvede, ki natisne 'Vrednost je 2' na konzolo.
  5. The 'break' ključna beseda je prisotna v bloku kode primer 2 . Posledično program prekine iz stavka switch takoj po izvedbi bloka kode.
  6. Kontrola programa se nadaljuje po izjava o preklopu in vse izjave, ki sledijo izjava o preklopu se izvajajo. V tem primeru po preklopu ni stavkov, zato se program zaključi.
  7. The izjava o preklopu ovrednotil vrednost spremenljivka št , našel ujemanje s primerom 2, izvedel ustrezen blok kode in nato zapustil stikalni blok zaradi prisotnosti izjava 'break' .

Primer stavka switch v C

Oglejmo si preprost primer stavka za preklop jezika 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; } 

Izhod

kako naj ugotovim velikost svojega monitorja
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

Primer zamenjave primera 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 '); } } 

Izhod

 hi 

Ključna beseda Break in Default v stavku Switch

Naj pojasnimo in opredelimo 'break' in 'privzete' ključne besede v kontekstu stavka switch, skupaj s primerom kode in izhodom.

1. Prekini ključno besedo:

The ključna beseda 'break' se uporablja znotraj kodnega bloka vsakega primera za predčasno prekinitev stavka switch. Ko program naleti na a izjava 'break' znotraj ohišja, takoj zapusti izjava o preklopu , ki preprečuje izvajanje naslednjih blokov primerov. The izjava 'break' je ključnega pomena za izogibanje stavkom switch' 'padejo skozi' obnašanje.

primer:

Vzemimo program, da razumemo uporabo break ključna beseda v 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; } 

Izhod

 Value is 3 

Pojasnilo:

V tem primeru je izjava o preklopu ocenjuje vrednost spremenljivka št (kateri je 3 ) in ga ujema z primer 3 . Blok kode, povezan z primer 3 se izvaja, tisk 'Vrednost je 3' na konzolo. The izjava 'break' znotraj primer 3 zagotavlja, da program zapusti stavek switch takoj po izvedbi tega bloka primerov in prepreči izvajanje vseh drugih primerov.

2. Privzeta ključna beseda:

Ko nobeden od male in male črke ujemati z ovrednoten izraz , deluje kot a vsestranski primer . Če ne obstaja nobena ujemajoča se velikost in a obstaja 'default' case , kodni blok, povezan z 'privzeto' primer je zagnan. Pogosto se uporablja za obravnavo okoliščin, ko nobena od navedenih situacij ne velja za podani vnos.

primer:

Vzemimo program, da razumemo uporabo privzeta ključna beseda v 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; } 

Izhod

 Value is not 1, 2, or 3 

Pojasnilo:

V tem primeru je izjava o preklopu preučuje vrednost spremenljivka št (kateri je 5 ). Ker se nobena črka ne ujema s številko, program izvede kodni blok, povezan z 'privzeti' primer . The izjava 'break' znotraj 'privzeti' primer zagotavlja, da program zapusti izjava o preklopu po izvedbi 'privzeto' blok ohišja.

Oba 'break' in 'privzete' ključne besede igrajo bistveno vlogo pri nadzoru poteka izvajanja znotraj stavka switch. The izjava 'break' pomaga preprečevati padce skozi vedenje, medtem ko 'privzeti' primer ponuja način za obravnavo neprimerljivih primerov.

Izjava C Switch je prelomna

V jeziku C je stavek switch padel; to pomeni, da če ne uporabite stavka break v primeru preklopa, bodo izvedeni vsi primeri za ujemajočim se primerom.

Poskusimo razumeti padec stanja izjave switch s spodnjim primerom.

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

Izhod

 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 

Izhod

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

Stavek primerov in primerov ugnezdenega stikala

Znotraj stavka switch lahko uporabimo poljubno število stavkov switch. Takšna vrsta stavkov se imenuje ugnezdeni stavki primera preklopa. Razmislite o naslednjem primeru.

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

Izhod

 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 

Prednosti izjave o preklopu:

Obstaja več prednosti izjava o preklopu v C. Nekatere glavne prednosti stavka switch so naslednje:

    Čitljivost in jasnost:The izjava o preklopu zagotavlja jedrnat in preprost način izražanja večsmerno razvejanje v kodi. Ukvarjanje z več primeri lahko naredi kodo bolj organizirano in lažje berljivo kot več ugnezdeni stavki if-else .Učinkovitost:The izjava o preklopu je na splošno učinkovitejši od serije izjave if-else ko imamo opravka z več pogoji. Deluje kot d direktna skakalna miza , zaradi česar je hitrejši in bolj optimiziran glede časa izvajanja.Logika primerov:The izjava o preklopu seveda ustreza scenarijem, kjer mora program sprejemati odločitve na podlagi določenih vrednosti ene same spremenljivke. Je intuitiven in enostaven način za implementacijo logike na podlagi primerov.

The izjava o preklopu podpira uporabo privzete velikosti, ki služi kot a vseobsegajoča možnost za vrednosti, ki se ne ujemajo z nobenim navedenim primerom. to privzeti primer obravnava nenavadne vnose ali okoliščine, ki niso izrecno navedene.

Slabosti izjave switch:

Obstaja več pomanjkljivosti izjava o preklopu v C. Nekatere glavne pomanjkljivosti stavka switch so naslednje:

    Omejeni izrazi:Izraz, uporabljen v izjava o preklopu mora povzročiti an integralna vrednost (char, int, enum) ali združljivo vrsto podatkov. Več ne zmore zapleteni ali nekonstantni izrazi , ki omejuje njegovo prilagodljivost v nekaterih scenarijih.Nezmožnost primerjave obsegov:Za razliko od izjave if-else , the izjava o preklopu ne more neposredno obravnavati obsegov vrednosti. Vsak primer v stavku switch predstavlja določeno konstantno vrednost, zaradi česar je težko učinkovito obravnavati obseg vrednosti.Ni podpore za števila s plavajočo vejico:The izjava o preklopu samo sprejema integralni tipi (cela števila) in vrednosti iz naštevanja ; ne sprejema števil s plavajočo vejico. Ne obvlada neintegralni tipi podatkov kot cela števila s plavajočo vejico , kar je lahko v nekaterih okoliščinah problematično.Vedenje ob padcu: Preklopi izjave imajo 'padejo skozi' privzeto vedenje, kar pomeni, da če primer ne vključuje a izjava 'break' , izvršba bo 'padejo skozi' na naslednji blok primerov. Če tega ne upravljate ustrezno, lahko povzroči neželeno vedenje.Podvojena koda:Uporaba a izjava o preklopu lahko v nekaterih okoliščinah povzroči podvojeno kodo, zlasti kadar številni primeri zahtevajo enaka dejanja. Če se ne upravlja pravilno, lahko to povzroči podvajanje kode.Ugnezdena stikala lahko postanejo zapletena:Ko se ukvarjate s ugnezdeni stikalne izjave , lahko koda postane zapletena in manj berljiva. Morda bodo potrebni dodatni napori za razumevanje in vzdrževanje takih ugnezdenih struktur.