logo

C Kapcsolási nyilatkozat

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

  1. A kapcsoló kifejezés egész számnak vagy karakternek kell lennie.
  2. A esetérték egész számnak vagy karakterállandónak kell lennie.
  3. A esetérték csak a switch utasításon belül használható.
  4. 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ó utasítás folyamata a c

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:

  1. A kapcsoló változó sz értékelik. Ebben az esetben, az egyiken inicializálva van a 2. érték .
  2. 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 .
  3. 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) .
  4. 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.
  5. 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.
  6. 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.
  7. 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ő:

    Olvashatóság és áttekinthetőség:A switch utasítás tömör és egyértelmű kifejezésmódot biztosít többutas elágazás a kódban. Ha több esetet kezel, a kód rendezettebbé és könnyebben olvashatóvá teheti, mint a többszörös beágyazott if-else utasítások .Hatékonyság:A switch utasítás általában hatékonyabb, mint egy sorozat ha-más kijelentések amikor több feltétellel foglalkozunk. d-ként működik irect ugróasztal , ami gyorsabbá és optimalizáltabbá teszi a végrehajtási idő szempontjából.Esetalapú logika:A switch utasítás természetesen illeszkedik azokhoz a forgatókönyvekhez, ahol a programnak egyetlen változó meghatározott értékei alapján kell döntéseket hoznia. Ez egy intuitív és egyszerű módja az esetalapú logika megvalósításának.

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ő:

    Korlátozott kifejezések:A használt kifejezés a switch utasítás egy olyan eredményt kell eredményeznie integrál érték (char, int, enum) vagy kompatibilis adattípus. Többet nem tud kezelni összetett vagy nem állandó kifejezések , korlátozza annak rugalmasság bizonyos forgatókönyvekben.Nem lehet összehasonlítani a tartományokat:nem úgy mint ha-más kijelentések , a switch utasítás nem tudja közvetlenül kezelni az értéktartományokat. A switch utasításban minden eset egy adott állandó értéket jelent, ami kihívást jelent az értéktartomány hatékony kezelésében.A lebegőpontos számok nem támogatottak:A switch utasítás csak elfogadja integrál típusok (egész számok) és értékeket enums ; nem fogad el lebegőpontos számokat. Nem kezeli nem integrált adattípusok mint lebegőpontos egész számok , ami bizonyos körülmények között problémás lehet.Átfutási viselkedés: Állítások váltása van 'kudarcba fullad' alapértelmezett viselkedés, ami azt jelenti, hogy ha egy eset nem tartalmazza a „törés” kijelentés , végrehajtási akarat 'kudarcba fullad' a következő esetblokkhoz. Ha nem kezelik megfelelően, ez nemkívánatos viselkedéshez vezethet.Duplikált kód:Használva switch utasítás bizonyos körülmények között duplikált kódot eredményezhet, különösen akkor, ha számos eset ugyanazt a műveletet követeli meg. Ha nem megfelelően kezeli, ez kódduplikációhoz vezethet.A beágyazott kapcsolók bonyolulttá válhatnak:Amikor foglalkozik beágyazott váltani utasításokat , a kód bonyolulttá és kevésbé olvashatóvá válhat. További erőfeszítéseket igényelhet az ilyen beágyazott struktúrák megértése és karbantartása.