Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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á caseconstant-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 default pouze popisek nebo switch popisek.
Typ switchexpression a caseconstant-expression musí být integrální. Hodnota každého z nich caseconstant-expression musí být v textu příkazu jedinečná.
Popisky casedefault těla switch 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 'a' mezi 'f' a convert_hex, 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 case příkazu bylo povoleno alespoň 257 switch 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 .