Инструкция switch

Инструкция switch — это инструкция многонаправленного ветвления, которая позволяет выбрать одну из множества альтернатив.

Структурная схема инструкции switch

Многонаправленное тестирование можно реализовать с помощью последовательности вложенных if-инструкций, однако, во многих случаях инструкция switch оказывается более эффективным решением.

Общий формат записи инструкции switch (англ. переключатель) на языке программирования С++ имеет следующий вид:

  • switch (выражение) {
  • case константа1:
  • последовательность инструкций
  • break;
  • case константа2:
  • последовательность инструкций
  • break;
  • . . .
  • default:
  • последовательность инструкций
  • }

Выполнение инструкции начинается с вычисления выражения, которое в результате должно давать целочисленное или символьное значение. Затем полученный результат последовательно сравнивается с case-константами из заданного списка. Все константные выражения должны иметь разные значения. В случае совпадения, выполняются инструкции, связанные с данной case-константой. После этого, если выход из switch-инструкции явно не указан, последовательно выполняются все остальные ветви. Выход обычно выполняется с помощью инструкций break или return:

  • инструкция break выполняет выход из switch-инструкции;
  • инструкция return выполняет выход из функции, в теле которой он записан.

Если совпадения не произошло, то выполняются инструкции default-ветви. Ветвь default не является обязательной, поэтому при ее отсутствии управление передается следующей за switch инструкции.

Рассмотрим пример: напишите программу - Калькулятор для арифметических операций сложения, вычитания, умножения и целочисленного деления над парой целых чисел.

Пример использования инструкции switch

Переменная ch получает символ, соответствующий знаку арифметической операции. Затем, происходит последовательное сравнение с case-константами из заданного списка. В случае совпадения, выполняются инструкции, связанные с данной case-константой, в противном случае выполняются инструкции по ветви default.