Аналог оператора if-else на много альтернативных вариантов выполнения. Однако, так как используются не любые выражения, а только константы, сильно оптимизирован.
switch (выражение) { case константа1: операторы1 case константа2: операторы2 default: операторы3 }
Идём сверху вниз и проверяем на соответствие константе. В случае соответствия,
выполняются операторы (не оператор, а операторы!). Чтобы остановить проверку
(а она продолжится далее), вызываем break
– он прерывает поток выполнения
циклов или оператора switch
, возвращаясь на уровень выше.
Если никто так нас и не остановил, а варианты закончились – переходим к
"ветке" default
.
Пример кода для получения текста "комментарий/комментариев" в зависимости от их числа:
#include <stdio.h> int main (void) { unsigned a = 1; char *text; // Указатель на символы - поймём позднее switch (a % 10) { case 1: text = "комментарий"; break; case 2: case 3: case 4: text = "комментария"; break; case 5: case 6: case 7: case 8: case 9: case 0: text = "комментариев"; default: return 1; } puts(text); return 0; }
Пока смотрим только на оператор switch. Всё остальное – чтобы заработал пример, а сам пример не был бы совсем выдуманным.