logo

C Switch Statement

Příkaz switch v C je alternativou k if-else-if žebříčkovému příkazu, který nám umožňuje provádět více operací pro různé možné hodnoty jedné proměnné zvané switch variable. Zde můžeme definovat různé příkazy ve více případech pro různé hodnoty jedné proměnné.

Syntaxe příkazu switch in c jazyk je uveden níže:

 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; } 

Pravidla pro příkaz switch v jazyce C

  1. The přepnout výraz musí být typu celé číslo nebo znak.
  2. The hodnota případu musí být celočíselná nebo znaková konstanta.
  3. The hodnota případu lze použít pouze uvnitř příkazu switch.
  4. The příkaz break ve spínací skříňce není nutné. Je to nepovinné. Pokud v případě není nalezen žádný příkaz break, budou provedeny všechny případy přítomné po shodném případu. Je známá jako propadnout stav příkazu C switch.

Zkusme to pochopit na příkladech. Předpokládáme, že existují následující proměnné.

 int x,y,z; char a,b; float f; 
Platný přepínačNeplatný přepínačPlatný případNeplatný případ
přepínač (x)přepínač (f)případ 3;pouzdro 2,5;
přepínač (x>y)přepínač (x+2,5)případ 'a';případ x;
přepínač (a+b-2)případ 1+2;případ x+2;
switch(func(x,y))případ 'x'>'y';případ 1,2,3;

Vývojový diagram příkazu switch v C

tok příkazu switch v c

Fungování příkazu switch case

Nejprve se vyhodnotí celočíselný výraz zadaný v příkazu switch. Tato hodnota je pak jedna po druhé porovnávána s konstantními hodnotami uvedenými v různých případech. Pokud je nalezena shoda, provedou se všechny příkazy uvedené v tomto případě spolu se všemi případy přítomnými po tomto případu, včetně výchozího příkazu. Žádné dva případy nemohou mít podobné hodnoty. Pokud odpovídající případ obsahuje příkaz break, pak všechny případy přítomné poté budou přeskočeny a ovládací prvek vyjde z přepínače. Jinak budou provedeny všechny případy následující po shodném případu.

Jak funguje příkaz C switch?

Pojďme si projít procesem krok za krokem, jak funguje příkaz switch v C:

Zvažte následující příkaz switch :

Program C:

 #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; } 

Výstup

 Value is 2 

Postup krok za krokem:

  1. The spínací proměnná č se hodnotí. V tomto případě, na jednom se inicializuje pomocí hodnota 2 .
  2. The vyhodnocená hodnota num (2). je porovnána s konstantami specifikovanými v každém případovém štítku uvnitř blok spínače .
  3. The příkaz switch odpovídá vyhodnocená hodnota (2) s konstantou uvedenou v druhý případ (případ 2) . Protože existuje shoda, program skočí na blok kódu přidružený k odpovídající případ (případ 2) .
  4. Blok kódu spojený s případ 2 se provede, který vytiskne 'Hodnota je 2' do konzole.
  5. The 'přestávka' klíčové slovo je přítomno v bloku kódu případ 2 . Výsledkem je, že program vypadne z příkazu switch ihned po provedení bloku kódu.
  6. Řízení programu pokračuje po příkaz switch a všechna následující prohlášení příkaz switch jsou popraveni. V tomto případě po přepnutí nejsou žádné příkazy, takže program skončí.
  7. The příkaz switch vyhodnotil hodnotu variabilní č , našel shodu s případem 2, provedl odpovídající blok kódu a poté opustil blok spínače kvůli přítomnosti prohlášení „přerušit“. .

Příklad příkazu switch v C

Podívejme se na jednoduchý příklad příkazu přepínače jazyka 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; } 

Výstup

jak najít skryté věci na android
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

Příklad pouzdra spínače 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 '); } } 

Výstup

 hi 

Klíčové slovo Break a Default v příkazu Switch

Pojďme si vysvětlit a definovat 'přestávka' a „výchozí“ klíčová slova v kontextu příkazu switch spolu s ukázkovým kódem a výstupem.

1. Klíčové slovo přerušení:

The klíčové slovo 'break' se používá v bloku kódu každého případu k předčasnému ukončení příkazu switch. Když program narazí na a prohlášení „přerušit“. uvnitř bloku pouzdra okamžitě opustí příkaz switch , které zabrání provedení následných bloků případů. The prohlášení „přerušit“. je zásadní pro zamezení příkazů switch' 'propadnout' chování.

Příklad:

Vezměme si program, abychom pochopili použití klíčové slovo break 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; } 

Výstup

 Value is 3 

Vysvětlení:

V tomto příkladu je příkaz switch hodnotí hodnotu variabilní č (který je 3 ) a shoduje se s ním případ 3 . Blok kódu spojený s případ 3 je proveden, tisk 'Hodnota je 3' do konzole. The prohlášení „přerušit“. v rámci případ 3 zajišťuje, že program ukončí příkaz switch ihned po provedení tohoto bloku případu, čímž zabrání provedení jakýchkoli dalších případů.

2. Výchozí klíčové slovo:

Když žádný z případové konstanty odpovídat hodnocený výraz , působí jako a univerzální případ . Pokud neexistuje žádný odpovídající případ a a existuje „výchozí“ případ , blok kódu spojený s 'výchozí' případ je spuštěn. Často se používá k řešení okolností, kdy žádná z uvedených situací neplatí pro poskytnutý vstup.

Příklad:

Vezměme si program, abychom pochopili použití výchozí klíčové slovo 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; } 

Výstup

 Value is not 1, 2, or 3 

Vysvětlení:

V tomto příkladu je příkaz switch zkoumá hodnotu variabilní č (který je 5 ). Protože žádnému případu neodpovídá num, program provede blok kódu spojený s „výchozí“ případ . The prohlášení „přerušit“. uvnitř „výchozí“ případ zajišťuje ukončení programu příkaz switch po provedení 'výchozí' pouzdrový blok.

Oba 'přestávka' a „výchozí“ klíčová slova hrají zásadní roli při řízení toku provádění v rámci příkazu switch. The prohlášení „přerušit“. pomáhá předcházet pádovému chování, zatímco „výchozí“ případ poskytuje způsob, jak řešit nesrovnatelné případy.

C Příkaz Switch je pádový

V jazyce C je příkaz switch padat; to znamená, že pokud v případě přepínače nepoužijete příkaz break, budou provedeny všechny případy po odpovídajícím případě.

Pokusme se pochopit pádový stav příkazu switch na příkladu uvedeném níže.

 #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; } 

Výstup

 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 

Výstup

 enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Příkaz vnořeného případu přepínače

V příkazu switch můžeme použít tolik příkazů switch, kolik chceme. Takový typ příkazů se nazývá vnořené příkazy switch case. Zvažte následující příklad.

 #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; } 

Výstup

 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 

Výhody příkazu switch:

Existuje několik výhod příkaz switch v C. Některé hlavní výhody příkazu switch jsou následující:

    Čitelnost a přehlednost:The příkaz switch poskytuje stručný a přímočarý způsob vyjádření vícecestné větvení v kódu. Vypořádání se s více případy může udělat kód organizovanější a snáze čitelný než více případů vnořené příkazy if-else .Účinnost:The příkaz switch je obecně účinnější než série if-others prohlášení při řešení více podmínek. Funguje jako d stůl s přímým skokem , což jej zrychluje a optimalizuje z hlediska doby provádění.Případová logika:The příkaz switch přirozeně zapadá do scénářů, kde se program potřebuje rozhodovat na základě konkrétních hodnot jedné proměnné. Je to intuitivní a přímočarý způsob implementace logiky založené na případech.

The příkaz switch podporuje použití výchozího případu, který slouží jako a univerzální možnost pro hodnoty, které neodpovídají žádnému uvedenému případu. Tento výchozí případ zpracovává neobvyklé vstupy nebo okolnosti, které nejsou výslovně uvedeny.

Nevýhody příkazu switch:

Existuje několik nevýhod příkaz switch v C. Některé hlavní nevýhody příkazu switch jsou následující:

    Omezené výrazy:Výraz použitý v příkaz switch musí vyústit v an integrální hodnota (char, int, enum) nebo kompatibilní datový typ. Víc to nezvládne složité nebo nekonstantní výrazy , omezující jeho flexibilita v některých scénářích.Neschopnost porovnat rozsahy:Na rozdíl od if-others prohlášení , příkaz switch nemůže přímo zpracovávat rozsahy hodnot. Každý případ v příkazu switch představuje určitou konstantní hodnotu, takže je náročné efektivně zpracovat rozsah hodnot.Žádná podpora pro čísla s plovoucí desetinnou čárkou:The příkaz switch pouze přijímá integrální typy (celá čísla) a hodnoty od výčty ; nepřijímá čísla s plovoucí desetinnou čárkou. To nezvládá neintegrální datové typy jako celá čísla s plovoucí desetinnou čárkou , což může být za určitých okolností problematické.Chování při pádu: Přepnout příkazy mít 'propadnout' chování ve výchozím nastavení, což znamená, že pokud případ nezahrnuje a prohlášení „přerušit“. , exekuce bude 'propadnout' do následujícího bloku případů. Pokud není správně spravováno, může to vést k nežádoucímu chování.Duplicitní kód:Používat příkaz switch může za určitých okolností vést k duplicitnímu kódu, zvláště když mnoho případů vyžaduje stejné akce. Pokud není správně spravováno, může to vést k duplikaci kódu.Vnořené přepínače se mohou stát složitými:Při jednání s vnořený příkazy switch kód se může stát složitým a hůře čitelným. Pochopení a udržování takových vnořených struktur může vyžadovat další úsilí.