cpp

Оператор выбора switch

Оператор выбора switch имеет следующий формат:

switch (<Выражение>) {
   case <Константа 1>:
      <Инструкции>
      break;
[...
   case <Константа N>:
      <Инструкции>
      break;]
[   default:
      <Инструкции>]
}

Вместо условия оператор switch принимает выражение. В зависимости от значения выражения выполняется один из блоков case, в котором указано это значение. Значением выражения должно быть целое число или символ. Если ни одно из значений не описано в блоках case, то выполняется блок default (если он указан). Обратите внимание на то, что значения в блоках case не могут иметь одинаковые константы. Пример использования оператора switch приведен в листинге 4.5.

Листинг 4.5. Использование оператора switch

#include <iostream>
#include <clocale>

int main() {
   std::setlocale(LC_ALL, "Russian_Russia.1251");
   int os = 0;
   std::cout << "Какой операционной системой вы пользуетесь?\n\
1 - Windows XP\n\
2 - Windows 8\n\
3 - Windows 10\n\
4 - Другая\n\n\
Введите число, соответствующее ответу: ";
   std::cout.flush();
   std::cin >> os;
   if (!std::cin.good()) {
      std::cout << "Вы ввели не число" << std::endl;
      return 1;
   }
   switch (os) {
      case 1:
         std::cout << "Вы выбрали - Windows XP";
         break;
      case 2:
         std::cout << "Вы выбрали - Windows 8";
         break;
      case 3:
         std::cout << "Вы выбрали - Windows 10";
         break;
      case 4:
         std::cout << "Вы выбрали – Другая";
         break;
      default:
         std::cout << "Мы не смогли определить систему";
   }
   std::cout << std::endl;
   return 0;
}

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

char ch = 'b';
switch (ch) {
   case 'a':
   case 'b':
   case 'c':
      std::cout << "a, b или c" << std::endl;
      break;
   case 'd':
      std::cout << "Только d" << std::endl;
}

В операторе case можно указать одно из значений перечисления. Пример проверки выбранного значения перечисления приведен в листинге 4.6.

Листинг 4.6. Использование оператора switch с перечислениями

#include <iostream>

enum Color { RED, BLUE, GREEN, BLACK };

int main() {
   Color color = GREEN;
   switch (color) {
      case RED:
         std::cout << "RED" << std::endl;
         break;
      case BLUE:
         std::cout << "BLUE" << std::endl;
         break;
      case GREEN:
         std::cout << "GREEN" << std::endl;
         break;
      case BLACK:
         std::cout << "BLACK" << std::endl;
   }
   return 0;
}

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Реквизиты

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp