logo

C Izjava o prebacivanju

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

  1. The prebaciti izraz mora biti cjelobrojnog ili znakovnog tipa.
  2. The vrijednost slučaja mora biti cijeli broj ili znakovna konstanta.
  3. The vrijednost slučaja može se koristiti samo unutar naredbe switch.
  4. 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čajNevaž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

tijek naredbe switch u c

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:

  1. The varijabla prekidača br se ocjenjuje. U ovom slučaju, na jedan se inicijalizira s vrijednost 2 .
  2. The evaluated num (2) vrijednost uspoređuje se s konstantama navedenim u oznaci svakog slučaja unutar blok prekidača .
  3. 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) .
  4. Blok koda povezan s slučaj 2 se izvršava, koji ispisuje 'Vrijednost je 2' na konzolu.
  5. 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.
  6. 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.
  7. 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:

    Čitljivost i jasnoća:The izjava prebaciti pruža sažet i jednostavan način izražavanja višesmjerno grananje u kodu. Rad s višestrukim slučajevima može učiniti kôd organiziranijim i lakšim za čitanje od višestrukih ugniježđene if-else izjave .Učinkovitost:The izjava prebaciti općenito je učinkovitiji od niza if-else izjave kada se radi o višestrukim uvjetima. Radi kao d stol za izravni skok , što ga čini bržim i optimiziranim u smislu vremena izvršenja.Logika temeljena na slučaju:The izjava prebaciti prirodno odgovara scenarijima u kojima program treba donositi odluke na temelju specifičnih vrijednosti jedne varijable. To je intuitivan i jednostavan način implementacije logike temeljene na slučaju.

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:

    Ograničeni izrazi:Izraz koji se koristi u izjava prebaciti mora rezultirati an integralna vrijednost (char, int, enum) ili kompatibilan tip podataka. Ne može podnijeti više složeni ili nepostojani izrazi , ograničavajući svoje fleksibilnost u nekim scenarijima.Nemogućnost usporedbe raspona:Za razliku od if-else izjave , the izjava prebaciti ne može izravno rukovati rasponima vrijednosti. Svaki slučaj u naredbi switch predstavlja određenu konstantnu vrijednost, što čini izazovnim učinkovito rukovanje nizom vrijednosti.Nema podrške za brojeve s pomičnim zarezom:The izjava prebaciti samo prihvaća integralni tipovi (cijeli brojevi) i vrijednosti iz nabrajanja ; ne prihvaća brojeve s pomičnim zarezom. Ne nosi se neintegralni tipovi podataka Kao cijeli brojevi s pomičnim zarezom , što bi u nekim okolnostima moglo biti problematično.Prolazno ponašanje: Zamijenite izjave imati 'propasti' ponašanje prema zadanim postavkama što implicira da ako slučaj ne uključuje a 'break' izjava , ovrha će 'propasti' na sljedeći blok slučajeva. Ako se ne upravlja na odgovarajući način, to može rezultirati neželjenim ponašanjem.Dvostruki kod:Korištenje a izjava prebaciti može u nekim okolnostima dovesti do duplog koda, posebno kada brojni slučajevi zahtijevaju iste radnje. Ako se ne upravlja ispravno, to može dovesti do dupliciranja koda.Ugniježđeni prekidači mogu postati složeni:Kada se radi o ugniježđeni switch izjave , kôd može postati složen i manje čitljiv. Možda će biti potreban dodatni napor za razumijevanje i održavanje takvih ugniježđenih struktura.