Операционная система UNIX. Руководство программиста

       

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


Выполнение оператора выбора switch приводит к передаче управления на один из нескольких вложенных операторов в зависимости от значения выражения. Оператор выбора имеет вид

switch ( выражение ) оператор

В выражении выполняется обычное арифметическое преобразование типов, а результат должен иметь тип int. Оператор обычно бывает составным; любой из операторов, вложенных в него, может быть помечен одним или несколькими префиксами case вида

case константное_выражение :

Типом константного_выражения должен быть int. Никакие два константных_выражения в одном операторе switch не могут иметь одинаковые значения. Точное определение константных_выражений содержится в разделе КОНСТАНТНЫЕ ВЫРАЖЕНИЯ.

Кроме того, можно задать не более одного оператора с префиксом вида

default :

который принято помещать после всех операторов с префиксами case.

При выполнении оператора switch значение выражения вычисляется и сравнивается по очереди со значениями всех константных_выражений из префиксов case. При обнаружении совпадения управление передается на оператор, следующий за сопоставленным префиксом. В противном случае, если указан префикс default, управление передается на оператор с этим префиксом; иначе ни один из операторов в конструкции switch не выполняется.

Префиксы case и default не оказывают влияния на поток управления; оно беспрепятственно продолжается через эти префиксы. Для выхода из конструкции выбора используется оператор break (см. следующий пункт).

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

switch (c) { case 'r': rflag = TRUE; break; case 'w': wflag = TRUE; break; default: (void) fprintf (stderr, "Неизвестная опция\n"); exit (2); }



Содержание раздела