Пространства имён
Варианты
Действия

switch statement

Материал из cppreference.com
< c‎ | language
 
 
Язык C
Общие темы
Препроцессор
Комментарии
Ключевые слова
Таблица ASCII
Escape-последовательности
История C
Управление программой
Операторы условного выполнения
оператор switch
Операторы повторения
Операторы перехода
Функции
объявление функции
спецификатор inline
Типы
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор alignas (C99)
Литералы
Выражения
порядок вычисления
альтернативные операторы
операторы
приоритет операторов
Утилиты
typedef-объявление
атрибуты (C99)
приведения типов
Разное
Ассемблерные вставки
 

Выполняет код, исходя из значения целочисленного аргумента.

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

Содержание

[править] Синтаксис

switch ( expression ) {
case constant_expression1 :
statement1 (необязательно)
case constant_expression2 :
statement2 (необязательно)
... ... ...
case constant_expressionn :
statementn (необязательно)
default: default_statement (необязательно)

}

[править] Объяснение

expression должно быть выражением, конвертируемым в целое число.

Все constant_expressions должны быть константными выражениями, конвертируемыми в целое число, которое является уникальным в пределах этого switch.

Если expression равно значению одного из определенных constant_expressioni, statementi (если имеется) и все последующие выражения (за исключением default_statement) выполняются. Если значение expression не соответствует ни одному из constant_expressions, выполняется default_statement, если оно есть.

Следует отметить, что если выполнение последующих веток нежелательно, нужно использовать оператор break. В этом случае выполнение switch-оператора завершается.

[править] Ключевые слова

switch, case, default

[править] Пример

#include <stdio.h>
 
void func(int x)
{
   printf("func(%d): ", x);
   switch(x)
   {
      case 1: printf("case 1, ");
 
      case 2: printf("case 2, ");
 
      case 3: printf("case 3.\n"); break;
 
      case 4: printf("case 4, ");
 
      case 5: printf("case 5, ");
 
      default: printf("default.\n");
   }
}
 
 
int main(void)
{
   for(int i = 1; i < 10; ++i)  func(i);
}

Вывод:

func(1): case 1, case 2, case 3.
func(2): case 2, case 3.
func(3): case 3.
func(4): case 4, case 5, default.
func(5): case 5, default.
func(6): default.
func(7): default.
func(8): default.
func(9): default.