Sdílet prostřednictvím


switch – příkaz (C)

Příkazy switch a case umožňují ovládat komplexní podmíněné operátory a operátory větvení.Příkaz switch předává řízení příkazu v jeho těle.

Syntax

  • Příkaz výběru:
    **switch (výraz)**příkaz

  • Příkaz s popiskem:
    case výraz konstanty : příkaz

    výchozí: příkaz

Řízení bude předáno příkazu, jehož výraz konstanty case odpovídá hodnotě switch (výraz).Příkaz switch může obsahovat libovolný počet instancí case, žádné dvě konstanty case v rámci stejného příkazu switch nesmí mít stejnou hodnotu.Spuštění těla příkazu začíná u vybraného příkazu a pokračuje až na konec těla nebo dokud příkaz break nepřesune řízení mimo tělo.

Použití příkazu switch obvykle vypadá takto:

switch ( výraz )

{

   deklarace 

   .

   .

   .

   casevýraz konstanty**:** 

      příkazy, které jsou provedeny, pokud se výraz rovná 

      hodnotě výrazu konstanty 

      .

      .

      .

      break; 

   default :

      příkazy, které jsou provedeny, pokud se výraz nerovná 

      žádné konstantě výrazu case 

}

Příkaz break lze použít pro ukončení zpracování v konkrétního příkazu case v rámci příkazu switch a pro přechod na konec příkazu switch.Bez použití příkazu break bude program pokračovat k dalšímu příkazu case a bude provádět příkazy do doby, než narazí na příkaz break nebo na konec příkazu.V některých případech nemusí být toto pokračování žádoucí.

Příkaz default je proveden, není-li žádný výraz konstanty příkazu case roven hodnotě výrazu switch ().Je-li příkaz default vynechán a není nalezena žádná shoda pro příkaz case nejsou vykonány žádné příkazy switch v těle.Existovat může nejvýše jeden příkaz default.Příkaz default se nemusí nacházet pouze na konci a může se zobrazit kdekoli v těle příkazu switch.Popisek case nebo default se může nacházet pouze uvnitř příkazu switch.

Typ výrazu switch a výrazu konstanty case musí být integrální.Hodnota každého výrazu konstanty case musí být jedinečná v rámci těla příkazu.

Popisky case a default příkazu switch jsou významné pouze v prvním testu, který určuje, kde v těle příkazu dojde ke spuštění.Příkazy switch mohou být vnořené.Jakékoli statické proměnné jsou inicializovány před jejich provedením v příkazech switch.

[!POZNÁMKA]

Deklarace se mohou zobrazit v čele složeného příkazu tvořící tělo příkazu switch, ale inicializace, které jsou zahrnuty v deklaracích nejsou provedeny.Příkaz switch předá řízení přímo spustitelnému příkazu v těle, vynecháním řádků obsahujících inicializací.

Následující příklady zobrazují příkazy switch:

switch( c ) 
{
    case 'A':
        capa++;
    case 'a':
        lettera++;
    default :
        total++;
}

Všechny tři příkazy těla switch jsou v tomto příkladu spuštěny, pokud se c rovná 'A', jelikož se před předchozím příkazem case neobjevil příkaz break.Řízení je přeneseno na první příkaz (capa++;) a pokračuje v pořadí napříč zbytkem těla.Je-li c rovno 'a', jsou lettera a total inkrementovány.Pouze total se zvyšuje, není-li c rovno 'A' nebo 'a'.

switch( i ) 
{
    case -1:
        n++;
        break;
    case 0 :
        z++;
        break;
    case 1 :
        p++;
        break;
}

V tomto příkladu příkaz break následuje za každým příkazem těla switch.Příkaz break vynutí východ z těla příkazu po provedení jednoho příkazu.Je-li i rovno -1, je zvýšeno pouze n.Příkaz break, který následuje příkaz n++; způsobí předání řízení mimo tělo příkazu, vynecháním zbývajících příkazů.Podobně, pokud je i rovno 0, je zvýšeno pouze z. Pokud se i rovná 1, je zvýšeno pouze p.Poslední příkaz break není nezbytně nutný, jelikož řízení je na konci složeného příkazu předáno mimo tělo funkce, je zde však z důvodu konzistence.

Jeden příkaz může obsahovat více popisků case, jak ukazuje následující příklad:

case 'a' :
case 'b' :
case 'c' :
case 'd' :
case 'e' :
case 'f' :  hexcvt(c);

Pokud se v tomto příkladu rovná výraz konstanty jakémukoli písmenu mezi 'a' a 'f', dojde k zavolání funkce hexcvt.

Specifické pro Microsoft

Microsoft C neomezuje počet případových hodnoty v prohlášení switch.Počet je omezen pouze dostupnou pamětí.ANSI C vyžaduje alespoň 257 povolených popisků případu v příkazu switch.

Ve výchozím nastavení pro jazyk Microsoft C jsou rozšíření společnosti Microsoft povoleny.Použijte možnost kompilátoru /Za pro zákaz těchto rozšíření.

Specificka produktu Microsoft END

Viz také

Referenční dokumentace

switch – příkaz (C++)