přepínač…případ v C (Příkaz přepínače v C) s příklady

⚡ Chytré shrnutí

Příkaz switch v jazyce C porovnává jeden výraz s více označeními případů a spustí odpovídající blok, což nabízí čistší alternativu k dlouhým řetězcům if-else, když si program musí vybrat z mnoha pevných celočíselných nebo znakových hodnot.

  • 🔀 Vícecestné větvení: Přepínač testuje jeden výraz a přeskočí na odpovídající označení případu.
  • ???? ️ Štítky případů: Každý případ používá jedinečnou konstantu, celé číslo nebo znakové označení končící dvojtečkou.
  • Klíčové slovo break: Příkaz break ukončuje případ; bez něj se provedení neprovede.
  • 🧩 Výchozí případ: Volitelný výchozí blok se spustí, když výrazu neodpovídá žádný popisek případu.
  • ???? Pravidla pro přepínání: Popisky případů zůstávají konstantní a jedinečné, povolen je pouze jeden výchozí popisek.

Příkaz Switch v jazyce C

Co je příkaz Switch v jazyce C?

Příkaz switch v jazyce C testuje hodnotu proměnné a porovnává ji s více případy. Jakmile je nalezena shoda případu, provede se blok příkazů přidružených k danému případu.

Každý případ v bloku přepínače má jiné jméno/číslo, které je označováno jako identifikátor. Hodnota zadaná uživatelem se porovnává se všemi případy uvnitř bloku přepínačů, dokud není nalezena shoda.

Pokud NENÍ nalezena shoda velkých a malých písmen, provede se výchozí příkaz a ovládací prvek opustí blok přepínače.

Syntaxe Switch Case

Obecná syntaxe toho, jak je přepínač implementován v programu 'C', je následující:

switch( expression )
{
	case value-1:
			Block-1;
			Break;
	case value-2:
			Block-2;
			Break;
	case value-n:
			Block-n;
			Break;
	default:
			Block-1;
			Break;
}
Statement-x;
  • Výraz může být celočíselný výraz nebo znakový výraz.
  • Hodnota-1, 2, n jsou popisky případů, které se používají k individuální identifikaci každého případu. Pamatujte, že popisky případů by neměly být stejné, protože to může způsobit problém při spouštění programu. Předpokládejme, že máme dva případy se stejným štítkem jako '1'. Potom při provádění programu bude proveden případ, který se objeví jako první, i když chcete, aby program provedl druhý případ. To vytváří problémy v programu a neposkytuje požadovaný výstup.
  • Popisky případů vždy končí dvojtečkou ( : ). Každý z těchto případů je spojen s blokem.
  • Blok není nic jiného než několik příkazů, které jsou seskupeny pro konkrétní případ.
  • Kdykoli je přepínač spuštěn, je hodnota testovacího výrazu porovnána se všemi případy, které jsme definovali uvnitř přepínače. Předpokládejme, že testovací výraz obsahuje hodnotu 4. Tato hodnota se porovnává se všemi případy, dokud se v programu nenajde případ, jehož označení čtyři. Jakmile je případ nalezen, je proveden blok příkazů souvisejících s tímto konkrétním případem a kontrola opustí přepínač.
  • Klíčové slovo break v každém případě označuje konec konkrétního případu. Pokud neuvedeme přerušení v každém případě, pak i když je konkrétní případ proveden, přepínač v C bude pokračovat ve vykonávání všech případů, dokud není dosaženo konce. To by se nemělo stávat; proto musíme vždy v každém případě zadat klíčové slovo break. Break po provedení případ ukončí a ovládací prvek vypadne ze spínače.
  • Výchozí případ je volitelný. Kdykoli se hodnota testovacího výrazu neshoduje s žádným z případů uvnitř přepínače, provede se výchozí nastavení. V opačném případě není nutné do přepínače zapisovat default.
  • Jakmile je přepínač proveden, ovládací prvek přejde na příkaz-x a provádění programu bude pokračovat.

Vývojový diagram příkazu přepínače

Následující diagram ukazuje, jak se vybírá pouzdro v pouzdru přepínače:

Vývojový diagram příkazu přepínače

Jak Switch funguje

Příklad pouzdra přepínače v C

Následující program ilustruje použití přepínače:

#include <stdio.h>
    int main() {
        int num = 8;
        switch (num) {
            case 7:
                printf("Value is 7");
                break;
            case 8:
                printf("Value is 8");
                break;
            case 9:
                printf("Value is 9");
                break;
            default:
                printf("Out of range");
                break;
        }
        return 0;
    }

Výstup:

Value is 8

Příklad pouzdra přepínače v C

  1. V daném programu jsme inicializovali proměnlivý číslo s hodnotou 8.
  2. Konstrukt přepínače se používá k porovnání hodnoty uložené v proměnné num a provedení bloku příkazů spojených s odpovídajícím případem.
  3. V tomto programu, protože hodnota uložená v proměnné num je osm, přepínač provede případ, jehož case-label je 8. Po provedení případu ovládací prvek vypadne z přepínače a program bude ukončen s úspěšným výsledkem tisk hodnoty na výstupní obrazovce.

Zkuste změnit hodnotu proměnné num a všimněte si změny na výstupu.

Uvažujeme například následující program, který je výchozí:

#include <stdio.h>
int main() {
int language = 10;
  switch (language) {
  case 1:
    printf("C#\n");
    break;
  case 2:
    printf("C\n");
    break;
  case 3:
    printf("C++\n");
    break;
  default:
    printf("Other programming language\n");}}

Výstup:

Other programming language

Při práci s pouzdrem přepínače v jazyce C seskupujete více případů s jedinečnými štítky. V každém případě musíte zavést příkaz break, aby se větvil na konci příkazu switch.

Volitelný výchozí případ se spustí, když nejsou provedeny žádné jiné shody.

Uvažujeme následující příkaz switch:

#include <stdio.h>
int main() {
int number=5;
switch (number) {
  case 1:
  case 2:
  case 3:
    printf("One, Two, or Three.\n");
    break;
  case 4:
  case 5:
  case 6:
    printf("Four, Five, or Six.\n");
    break;
  default:
    printf("Greater than Six.\n");}}

Výstup:

Four, Five, or Six.

Vnořený přepínač v C

In C, můžeme mít vnitřní spínač zapuštěný do vnějšího spínače. Také případové konstanty vnitřního a vnějšího přepínače mohou mít společné hodnoty a bez jakýchkoli konfliktů.

Uvažujme následující program, který po uživateli vyzve k zadání jeho vlastního ID. Pokud je ID platné, program ho požádá o zadání hesla; pokud je heslo správné, program vypíše jméno uživatele, jinak program vypíše Nesprávné heslo; a pokud ID neexistuje, program vypíše Nesprávné ID.

#include <stdio.h>
int main() {
        int ID = 500;
        int password = 000;
        printf("Plese Enter Your ID:\n ");
        scanf("%d", & ID);
        switch (ID) {
            case 500:
                printf("Enter your password:\n ");
                scanf("%d", & password);
                switch (password) {
                    case 000:
                        printf("Welcome Dear Programmer\n");
                        break;
                    default:
                        printf("incorrect password");
                        break;
                }
                break;
            default:
                printf("incorrect ID");
                break;
        }
}

Výstup:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

Vnořený přepínač v C

  1. V daném programu máme inicializovány dvě proměnné: ID a heslo.
  2. Vnější konstrukt switch se používá k porovnání hodnoty zadané v proměnné ID. Provede blok příkazů přidružený k odpovídajícímu případu (pokud ID==500).
  3. Pokud je blokový příkaz proveden s odpovídající velikostí písmen, použije se vnitřní přepínač k porovnání hodnot zadaných v proměnné password a k provedení příkazů spojených s odpovídající velikostí písmen (pokud password==000).
  4. Jinak případ přepínače spustí výchozí případ a vytiskne příslušný text týkající se osnovy programu.

Proč potřebujeme pouzdro Switch?

Existuje jeden potenciální problém s if- else prohlášení což je složitost programu se zvyšuje, kdykoli se zvyšuje počet alternativních cest. Pokud v programu použijete více konstrukcí if-else, program může být obtížně čitelný a srozumitelný. Někdy to může dokonce zmást vývojáře, který program sám napsal.

Řešením tohoto problému je příkaz switch.

Pravidla pro příkaz switch

Při psaní přepínače v jazyce C dodržujte tato pravidla:

  • Výraz se musí vždy provést na výsledek.
  • Popisky případů musí být konstantní a jedinečné.
  • Popisky případů musí končit dvojtečkou ( : ).
  • V každém případě musí být přítomno klíčové slovo break.
  • Může existovat pouze jeden výchozí štítek.
  • Můžeme vnořit více příkazů switch.

Nejčastější dotazy

Přepínač AC přijímá pouze hodnoty typu int, char a enum – nikdy ne čísla s plovoucí čárkou ani řetězce, protože každé označení musí být konstantní celé číslo.

Bez přerušení se kontrola propadne a spustí se i v každém dalším případě – někdy úmyslně, ale obvykle je to náhodná chyba.

Ne. C nemůže přepínat řetězce; popisky musí být konstantní celá čísla. Porovnejte text s příkazem strcmp uvnitř příkazu if-else.

Standard C zakazuje rozsahy, ačkoli GCC povoluje nepřenosné rozšíření case 1 … 5:, kterému by se měl přenositelný kód vyhnout.

Ne. Výchozí případ může být kdekoli; spustí se pouze tehdy, když se neshoduje žádný popisek. Poslední umístění je pouhou konvencí.

Ano, ale tělo případu uzavírejte do závorek, jinak může deklarace za návěstím spustit chyby kompilátoru.

Ano. Asistenti kódování s umělou inteligencí navrhují bloky přepínání, přidávají jednotlivé přerušení a označují nechtěné přerušení. Vždy zkontrolujte vygenerovanou logiku.

GitHub Copilot automaticky doplňuje popisky případů, vkládá příkazy break a převádí dlouhé řetězce if-else na switch z komentáře.

Shrňte tento příspěvek takto: