Příkaz switch
V případě, že byste chtěli provést rozlišný kód v závislosti na hodnotě nějakého výrazu,
a tento výrazu (např. proměnná) může nabývat více různých hodnot, tak může být zdlouhavé použít
spoustu ifů:
if (a == 0) {
...
}
else if (a == 1) {
...
}
else if (a == 2) {
...
}
...
Jako jistá zkratka může sloužit příkaz switch. Ten má následující syntaxi:
switch (<výraz>) {
case <hodnota A>: <blok kódu>
case <hodnota B>: <blok kódu>
case <hodnota C>: <blok kódu>
...
}
Tento příkaz vyhodnotí předaný výraz, a pokud se ve switchi nachází klíčové slovo case následované
hodnotou odpovídající hodnotě výrazu, tak program skočí na blok, který následuje za case. Dále se program
bude vykonávat sekvenčně až do konce switche (pak už se case ignoruje).
Tento program vypíše 52, protože předaný výraz má hodnotu 5, takže program skočí na blok za
case 5 a dále pokračuje sekvenčně až do konce bloku switch příkazu.
#include <stdio.h>
int main() {
switch (5) {
case 0: printf("0");
case 1: printf("1");
case 5: printf("5");
case 2: printf("2");
}
return 0;
}
Do switche lze předat i blok pojmenovaný default, na který program skočí v případě, že se
nenalezne žádný case s odpovídající hodnotou:
#include <stdio.h>
int main() {
switch (10) {
case 0: printf("0");
case 1: printf("1");
case 5: printf("5");
case 2: printf("2");
default: printf("nenalezeno");
}
return 0;
}
Velmi často chcete provést pouze jeden blok kódu u jednoho case a nepokračovat po něm až do konce
celého switch bloku. Běžně se tedy za každým case blokem používá příkaz break, který ukončí
provádějí celého switch příkazu:
#include <stdio.h>
int main() {
switch (1) {
case 0: printf("0"); break;
case 1: printf("1"); break;
case 2: printf("2"); break;
default: printf("nenalezeno");
}
return 0;
}