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
- The preklopite izraz mora biti celega ali znakovnega tipa.
- The vrednost primera mora biti celo število ali znakovna konstanta.
- The vrednost primera lahko uporabite samo znotraj stavka switch.
- 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 stikalo | Neveljavno stikalo | Veljavni primer | Neveljavna 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
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:
- The preklopite spremenljivko št se ocenjuje. V tem primeru, na enem se inicializira z vrednost 2 .
- The ocenjena num (2) vrednost se primerja s konstantami, navedenimi v oznaki posameznega primera znotraj stikalni blok .
- 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) .
- Blok kode, povezan z primer 2 se izvede, ki natisne 'Vrednost je 2' na konzolo.
- The 'break' ključna beseda je prisotna v bloku kode primer 2 . Posledično program prekine iz stavka switch takoj po izvedbi bloka kode.
- 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.
- 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:
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: