Sdílet prostřednictvím


switch Příkaz (C)

Příkazy switch pomáhají case řídit složité operace podmíněného a větvení. Příkaz switch přenese řízení na příkaz v jeho těle.

Syntaxe

selection-statement:
switch ( expression ) statement

labeled-statement:
case constant-expression : statement
default : statement

Poznámky

Příkaz switch způsobí, že se ovládací prvek přenese do jednoho labeled-statement v těle příkazu v závislosti na hodnotě expression.

Hodnoty expression a každý z nich constant-expression musí mít celočíselný typ. V constant-expression době kompilace musí mít jednoznačnou celočíselnou celočíselnou hodnotu.

Ovládací prvek předá case příkaz, jehož constant-expression hodnota odpovídá hodnotě expression. Příkaz switch může obsahovat libovolný počet case instancí. Žádné dvě constant-expression hodnoty ve stejném switch příkazu však mohou mít stejnou hodnotu. switch Spuštění těla příkazu začíná prvním příkazem v nebo po shodě labeled-statement. Provádění pokračuje až do konce těla nebo dokud break příkaz nepřenese kontrolu z těla.

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

switch ( expression )
{
    // declarations
    // . . .
    case constant_expression:
        // statements executed if the expression equals the
        // value of this constant_expression
        break;
    default:
        // statements executed if expression does not equal
        // any case constant_expression
}

Příkaz můžete použít break k ukončení zpracování konkrétního popisovaného příkazu v rámci switch příkazu. Vytvoří větve na konec switch příkazu. Bez break, program pokračuje k dalšímu označenému příkazu, provádění příkazů až do break dosažení nebo konce příkazu. V některých situacích může být toto pokračování žádoucí.

Příkaz default se provede, pokud se žádná case constant-expression hodnota nerovná hodnotě expression. Pokud neexistuje žádný default příkaz a nenajde se žádná case shoda, žádný z příkazů v switch těle se nespustí. Může existovat maximálně jeden default příkaz. Příkaz default nemusí přijít na konci. Může se zobrazit kdekoli v textu switch příkazu. Uvnitř case příkazu se může objevit switch pouze popisek nebo default popisek.

Typ switch expression a case constant-expression musí být integrální. Hodnota každého z nich case constant-expression musí být v textu příkazu jedinečná.

Popisky case switch těla default příkazu jsou významné pouze v počátečním testu, který určuje, kde spuštění začíná v těle příkazu. switch příkazy lze vnořit. Všechny statické proměnné se inicializují před spuštěním do libovolných switch příkazů.

Poznámka:

Deklarace se mohou objevit v hlavě složeného příkazu tvořícího switch tělo, ale inicializace zahrnuté do deklarací se neprovádí. Příkaz switch přenáší řízení přímo do spustitelného příkazu v těle a obchází řádky, které obsahují inicializace.

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

switch( c )
{
    case 'A':
        capital_a++;
    case 'a':
        letter_a++;
    default :
        total++;
}

Všechny tři příkazy těla v tomto příkladu switch jsou provedeny, pokud c je rovna 'A', protože žádný break příkaz se nezobrazí před následujícím case. Řízení provádění se přenese na první příkaz (capital_a++;) a pokračuje v pořadí přes zbytek těla. Je-li c roven 'a', letter_a a total jsou inkrementovány. Pouze total se zvýší, pokud c se nerovná 'A' nebo 'a'.

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

V tomto příkladu se break příkaz řídí každým příkazem switch těla. Příkaz break vynutí výstup z textu příkazu po provedení jednoho příkazu. Je-li i roven hodnotě -1, n je pouze zvýšení. Následující break příkaz n++; způsobí, že řízení provádění předává z textu příkazu a vynechá zbývající příkazy. Podobně platí, že pokud i je rovna 0, z pouze se zvýší; pokud i se rovná 1, zvýší se pouze p . Konečné break prohlášení není nezbytně nutné, protože ovládací prvek předá tělo na konci složeného příkazu. Je součástí konzistence.

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

switch( c )
{
    case 'a' :
    case 'b' :
    case 'c' :
    case 'd' :
    case 'e' :
    case 'f' :  convert_hex(c);
}

V tomto příkladu, pokud constant-expression se rovná libovolnému písmenu convert_hex mezi 'a' a 'f', funkce je volána.

specifické pro společnost Microsoft

Microsoft C neomezuje počet case hodnot v switch příkazu. Počet je omezen pouze dostupnou pamětí. ANSI C vyžaduje, aby v switch příkazu bylo povoleno alespoň 257 case popisků.

Jazyk default Microsoft C znamená, že jsou povolená rozšíření Microsoftu. K zakázání těchto rozšíření použijte možnost kompilátoru /Za .

Viz také

switch Příkaz (C++)