Программы
Оператор switch

Оператор switch

Аналог оператора 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. Всё остальное – чтобы заработал пример, а сам пример не был бы совсем выдуманным.

Изображение Изучаем язык программирования Си