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

Оператор switch (переключатель) предназначен для разветвления процесса вы­числений на несколько направлений. Структурная схема оператора приведена на рис. 4.3.

Формат оператора:

switch (выражение)

{

case константное_выражение_1: [ список_операторов_1 ]

case константное_выражение_2: [ список_операторов_2 ]

case константное_выражение_n: [ список_операторов_n ]

[ default: операторы ]

}

Выполнение оператора начинается с вычисления выражения. Тип выражения чаще всего целочисленный (включая char) или строковый1. Затем управление передается первому оператору из списка, помеченному константным выражени­ем, значение которого совпало с вычисленным.

Все константные выражения должны быть неявно приводимы к типу выражения в скобках. Если совпадения не произошло, выполняются операторы, расположен­ные после слова default (а при его отсутствии управление передается следующему за switch оператору).

Каждая ветвь переключателя должна заканчиваться явным оператором перехо­да, а именно оператором break, goto или return:

□ оператор break выполняет выход из самого внутреннего из объемлющих его
операторов switch, for, while и do (см. раздел «Оператор break», с. 84);

□ оператор goto выполняет переход на указанную после него метку, обычно это
метка case одной из нижележащих ветвей оператора switch (см. раздел «Опе­
ратор goto», с. 83);

□ оператор return выполняет выход из функции, в теле которой он записан (см.
раздел «Оператор return», с. 87).

Оператор goto обычно используют для последовательного выполнения несколь­ких ветвей переключателя, однако поскольку это нарушает читабельность про­граммы, такого решения следует избегать.

В листинге 4.2 приведен пример программы, реализующей простейший кальку­лятор на четыре действия.

bool ok = true;

double res, a, b;

char op = '-';

switch (op)

{

case '+': res = a + b; break;

case '-': res = a - b; break;

case '*': res = a * b; break;

case '/': res = a / b; break;

default: res = double.NaN; ok - false; break;

}

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: