A C-ben lévő switch utasítás az if-else-if ladder utasítás alternatívája, amely lehetővé teszi, hogy több műveletet hajtsunk végre egyetlen változónak nevezett változó lehetséges értékeivel. Itt többféle állítást definiálhatunk egy változó különböző értékeire több esetben is.
A switch utasítás szintaxisa in c nyelv lent van megadva:
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; }
A switch utasítás szabályai C nyelven
- A kapcsoló kifejezés egész számnak vagy karakternek kell lennie.
- A esetérték egész számnak vagy karakterállandónak kell lennie.
- A esetérték csak a switch utasításon belül használható.
- A szünet kijelentés kapcsoló esetén nem kötelező. Ez nem kötelező. Ha az ügyben nem található break utasítás, akkor az összes eset végrehajtásra kerül a párosított eset után. Úgy ismert kudarcba fullad a C switch utasítás állapota.
Próbáljuk meg megérteni a példákon keresztül. Feltételezzük, hogy a következő változók vannak.
int x,y,z; char a,b; float f;
Érvényes kapcsoló | Érvénytelen kapcsoló | Érvényes eset | Érvénytelen eset |
---|---|---|---|
kapcsoló (x) | kapcsoló (f) | 3. eset; | eset 2.5; |
kapcsoló (x>y) | kapcsoló (x+2,5) | „a” eset; | x eset; |
kapcsoló (a+b-2) | eset 1+2; | x+2 eset; | |
kapcsoló(func(x,y)) | eset 'x'>'y'; | eset 1,2,3; |
A kapcsoló utasításának folyamatábrája C-ben
Kapcsoló eset utasítás működése
Először a switch utasításban megadott egész kifejezés kerül kiértékelésre. Ezt az értéket ezután egyenként egyeztetjük a különböző esetekben megadott állandó értékekkel. Ha talál egyezést, akkor az adott esetben megadott összes utasítás végrehajtásra kerül, az eset utáni összes esettel együtt, beleértve az alapértelmezett utasítást is. Két esetnek nem lehet hasonló értéke. Ha az illesztett eset tartalmaz break utasítást, akkor az utána lévő összes eset kimarad, és a vezérlő kikerül a kapcsolóból. Ellenkező esetben az egyeztetett esetet követő összes eset végrehajtásra kerül.
Hogyan működik a C switch utasítás?
Nézzük meg lépésről lépésre, hogyan működik a switch utasítás C-ben:
Tekintsük a következő switch utasítás :
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; }
Kimenet
Value is 2
Lépésről lépésre folyamat:
- A kapcsoló változó sz értékelik. Ebben az esetben, az egyiken inicializálva van a 2. érték .
- A kiértékelt szám (2) érték összevetjük az egyes esetekben megadott állandókkal a címkén belül kapcsolóblokk .
- A switch utasítás egyezik a kiértékelt érték (2) pontjában meghatározott állandóval második eset (2. eset) . Mivel egyezés van, a program a programhoz tartozó kódblokkra ugrik egyező eset (2. eset) .
- A következőhöz társított kódblokk 2. eset végrehajtásra kerül, ami kinyomtatja 'Az érték 2' a konzolhoz.
- A 'szünet' kulcsszó szerepel a kódblokkban 2. eset . Ennek eredményeként a program a kódblokk végrehajtása után azonnal kitör a switch utasításból.
- A programvezérlés a következő után folytatódik switch utasítás , és a következő kijelentéseket switch utasítás kivégzik. Ebben az esetben a váltás után nincsenek utasítások, így a program leáll.
- A switch utasítás értékelte az értékét változó sz , talált egyezést a 2. esettel, végrehajtotta a megfelelő kódblokkot, majd kilépett a kapcsolóblokk jelenléte miatt a „törés” kijelentés .
Példa egy switch utasításra C-ben
Lássunk egy egyszerű példát egy C nyelvi kapcsoló utasításra.
#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; }
Kimenet
java szerver oldalak
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Példa váltási esetre 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 '); } }
Kimenet
hi
Break és alapértelmezett kulcsszó a Switch utasításban
Magyarázzuk meg és határozzuk meg a 'szünet' és 'alapértelmezett' kulcsszavak a switch utasítás kontextusában, a példakóddal és a kimenettel együtt.
1. Kulcsszó törése:
A 'break' kulcsszó minden eset kódblokkjában használatos a switch utasítás idő előtti befejezésére. Amikor a program találkozik a „törés” kijelentés tokblokkon belül azonnal kilép a switch utasítás , megakadályozva a következő esetblokkok végrehajtását. A „törés” kijelentés kulcsfontosságú a váltási kijelentések elkerüléséhez' 'kudarcba fullad' viselkedés.
Példa:
Vegyünk egy programot, hogy megértsük a használatát break kulcsszó C-ben.
#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; }
Kimenet
Value is 3
Magyarázat:
Ebben a példában a switch utasítás értékeli az értékét változó sz (ami 3 ) és egyezik vele eset 3 . A következőhöz társított kódblokk eset 3 végrehajtásra kerül, nyomtatás 'Az érték 3' a konzolhoz. A „törés” kijelentés belül eset 3 biztosítja, hogy a program ezen esetblokk végrehajtása után azonnal kilépjen a switch utasításból, megakadályozva minden más eset végrehajtását.
2. Alapértelmezett kulcsszó:
Amikor egyik sem esetállandók párosítsd a kiértékelt kifejezés , úgy működik, mint a mindenre kiterjedő eset . Ha nincs egyező eset, és a 'alapértelmezett' eset létezik , a kódblokk, amelyhez a 'alapértelmezett' ügy fut. Gyakran használják olyan körülmények kezelésére, amikor a megadott helyzetek egyike sem vonatkozik a megadott bemenetre.
Példa:
Vegyünk egy programot, hogy megértsük a használatát alapértelmezett kulcsszó C-ben.
#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; }
Kimenet
Value is not 1, 2, or 3
Magyarázat:
Ebben a példában a switch utasítás értékét vizsgálja a változó sz (ami 5 ). Mivel egyetlen eset sem egyezik a számmal, a program végrehajtja a kódhoz tartozó kódblokkot 'alapértelmezett' eset . A „törés” kijelentés benne 'alapértelmezett' eset biztosítja, hogy a program kilépjen a switch utasítás végrehajtása után a 'alapértelmezett' tok blokk.
Mind a 'szünet' és 'alapértelmezett' kulcsszavak alapvető szerepet játszanak a végrehajtás folyamatának vezérlésében egy switch utasításon belül. A „törés” kijelentés segít megelőzni az áteső viselkedést, míg a 'alapértelmezett' eset módot ad a páratlan esetek kezelésére.
C A Switch utasítás átesik
A C nyelvben a switch utasítás fall through; ez azt jelenti, hogy ha nem használunk break utasítást a switch-esetben, akkor a megfelelő eset utáni összes eset végrehajtásra kerül.
Próbáljuk megérteni a switch utasítás átesési állapotát az alábbi példán keresztül.
#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; }
Kimenet
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
Kimenet
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Beágyazott kapcsoló esetleírás
Egy switch utasításon belül annyi switch utasítást használhatunk, amennyit csak akarunk. Az ilyen típusú utasításokat beágyazott switch case utasításoknak nevezzük. Tekintsük a következő példát.
#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; }
Kimenet
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
A switch utasítás előnyei:
Számos előnye van a switch utasítás A switch utasítás néhány fő előnye a következő:
A switch utasítás támogatja az alapértelmezett eset használatát, amely a mindenre kiterjedő lehetőség olyan értékekre, amelyek nem egyeznek a megadott esetekkel. Ez alapértelmezett eset olyan szokatlan inputokat vagy körülményeket kezel, amelyek nincsenek kifejezetten megjelölve.
A switch állítás hátrányai:
Számos hátránya van a switch utasítás A switch utasítás néhány fő hátránya a következő: