Naredba switch u C-u alternativa je naredbi if-else-if ljestvice koja nam omogućuje izvršavanje više operacija za različite moguće vrijednosti jedne varijable koja se zove varijabla switch. Ovdje možemo definirati različite izjave u više slučajeva za različite vrijednosti jedne varijable.
Sintaksa naredbe switch u c jezik dano je u nastavku:
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 naredbu switch u C jeziku
- The prebaciti izraz mora biti cjelobrojnog ili znakovnog tipa.
- The vrijednost slučaja mora biti cijeli broj ili znakovna konstanta.
- The vrijednost slučaja može se koristiti samo unutar naredbe switch.
- The break izjava u slučaju prekidača nije obavezno. Nije obavezno. Ako u predmetu nije pronađena naredba break, svi slučajevi će se izvršiti prisutni nakon uparenog slučaja. Poznato je kao propasti naredba stanja C switch.
Pokušajmo to razumjeti na primjerima. Pretpostavljamo da postoje sljedeće varijable.
int x,y,z; char a,b; float f;
Važeći prekidač | Nevažeći prekidač | Valjani slučaj | Nevažeća velika i mala slova |
---|---|---|---|
prekidač(x) | prekidač(f) | slučaj 3; | slučaj 2.5; |
prekidač (x>y) | prekidač (x+2,5) | slučaj 'a'; | slučaj x; |
prekidač (a+b-2) | slučaj 1+2; | slučaj x+2; | |
prekidač(func(x,y)) | slučaj 'x'>'y'; | slučaj 1,2,3; |
Dijagram toka naredbe switch u C-u
Funkcioniranje switch case naredbe
Prvo se procjenjuje cjelobrojni izraz naveden u naredbi switch. Ta se vrijednost zatim uspoređuje jedna po jedna s konstantnim vrijednostima danim u različitim slučajevima. Ako se pronađe podudaranje, tada se izvršavaju sve naredbe navedene u tom slučaju zajedno sa svim slučajevima prisutnima nakon tog slučaja, uključujući zadanu naredbu. Dva slučaja ne mogu imati slične vrijednosti. Ako upareni slučaj sadrži naredbu break, tada će svi slučajevi prisutni nakon toga biti preskočeni, a kontrola dolazi iz prekidača. U protivnom će se izvršiti svi slučajevi koji slijede upareni slučaj.
Kako funkcionira naredba C switch?
Prođimo kroz postupak korak po korak kako naredba switch funkcionira u C-u:
Razmotrite sljedeće izjava prebaciti :
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; }
Izlaz
Value is 2
Postupak korak po korak:
- The varijabla prekidača br se ocjenjuje. U ovom slučaju, na jedan se inicijalizira s vrijednost 2 .
- The evaluated num (2) vrijednost uspoređuje se s konstantama navedenim u oznaci svakog slučaja unutar blok prekidača .
- The izjava prebaciti odgovara procijenjena vrijednost (2) s konstantom navedenom u drugi slučaj (slučaj 2) . Budući da postoji podudaranje, program skače na blok koda povezan s odgovarajući slučaj (slučaj 2) .
- Blok koda povezan s slučaj 2 se izvršava, koji ispisuje 'Vrijednost je 2' na konzolu.
- The 'pauza' ključna riječ prisutna je u bloku koda slučaj 2 . Kao rezultat toga, program izlazi iz naredbe switch odmah nakon izvođenja bloka koda.
- Kontrola programa se nastavlja nakon izjava prebaciti , i sve izjave nakon izjava prebaciti izvršavaju se. U ovom slučaju nema naredbi nakon switcha, pa se program prekida.
- The izjava prebaciti procijenio vrijednost varijabla br , pronašao podudaranje s slučajem 2, izvršio odgovarajući blok koda, a zatim izašao iz blok prekidača zbog prisutnosti 'break' izjava .
Primjer naredbe switch u C-u
Pogledajmo jednostavan primjer naredbe za promjenu 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; }
Izlaz
serijski u postgresu
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Primjer zamjene kućišta 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 '); } }
Izlaz
hi
Ključna riječ Break i Default u naredbi Switch
Objasnimo i definirajmo 'pauza' i 'zadane' ključne riječi u kontekstu naredbe switch, zajedno s primjerom koda i izlazom.
1. Prekid ključne riječi:
The ključna riječ 'break' koristi se unutar bloka koda svakog slučaja za prerano prekidanje naredbe switch. Kada program naiđe na a 'break' izjava unutar bloka kućišta, odmah izlazi iz izjava prebaciti , sprječavajući izvođenje sljedećih blokova slučaja. The 'break' izjava je ključno za izbjegavanje switch izjava' 'propasti' ponašanje.
Primjer:
Uzmimo program da bismo razumjeli upotrebu prekinuti ključnu riječ u 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; }
Izlaz
Value is 3
Obrazloženje:
U ovom primjeru, izjava prebaciti procjenjuje vrijednost varijabla br (koji je 3 ) i spaja ga s slučaj 3 . Blok koda povezan s slučaj 3 se izvršava, ispis 'Vrijednost je 3' na konzolu. The 'break' izjava unutar slučaj 3 osigurava da program izađe iz naredbe switch odmah nakon izvođenja ovog bloka slučajeva, sprječavajući izvođenje bilo kojih drugih slučajeva.
2. Zadana ključna riječ:
Kada nitko od padežne konstante odgovarati ocjenjivani izraz , djeluje kao sveobuhvatan slučaj . Ako ne postoji odgovarajući slučaj i a 'zadani' slučaj postoji , blok koda povezan s 'zadano' slučaj je pokrenut. Često se koristi za rješavanje okolnosti u kojima se niti jedna od navedenih situacija ne odnosi na navedeni unos.
Primjer:
Uzmimo program da bismo razumjeli upotrebu zadana ključna riječ u 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; }
Izlaz
Value is not 1, 2, or 3
Obrazloženje:
U ovom primjeru, izjava prebaciti ispituje vrijednost varijabla br (koji je 5 ). Budući da nijedan slučaj ne odgovara broju, program izvodi blok koda povezan s 'zadani' slučaj . The 'break' izjava unutar 'zadani' slučaj osigurava da program izađe iz izjava prebaciti nakon izvršenja 'zadano' blok kućišta.
Oba 'pauza' i 'zadane' ključne riječi igraju bitnu ulogu u kontroli tijeka izvršenja unutar naredbe switch. The 'break' izjava pomaže u sprječavanju propadanja, dok 'zadani' slučaj pruža način za rješavanje neusklađenih slučajeva.
Izjava C Switch je prolazna
U C jeziku, naredba switch je fall through; to znači da ako ne koristite naredbu break u slučaju switch, svi slučajevi nakon odgovarajućeg slučaja će se izvršiti.
Pokušajmo razumjeti pad kroz stanje naredbe switch pomoću donjeg primjera.
#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; }
Izlaz
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
Izlaz
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Izjava o slučaju ugniježđenog prekidača
Možemo koristiti onoliko switch naredbi koliko želimo unutar switch naredbe. Takva vrsta naredbi naziva se ugniježđena naredba switch case. Razmotrite sljedeći primjer.
#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; }
Izlaz
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 switch:
Nekoliko je prednosti izjava prebaciti u C. Neke glavne prednosti naredbe switch su sljedeće:
The izjava prebaciti podržava korištenje zadanog slučaja koji služi kao a opcija za sve za vrijednosti koje ne odgovaraju nijednom navedenom slučaju. Ovaj zadani slučaj obrađuje neobične unose ili okolnosti koje nisu izričito navedene.
Nedostaci izjave switch:
Postoji nekoliko nedostataka izjava prebaciti u C. Neki glavni nedostaci izjave switch su sljedeći: