Учись программированию на C++ Builder бесплатно!

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

switch (выражение_выбора)
{
case значение_1: оператор_1;
break; // не обязательно
case значение_n: оператор_n;
break; // не обязательно
default : оператор; // не обязательно
}

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

Значения, указываемые в метках case, должны быть константными выражениями, соответствующими возможным значениям выражения выбора. После значения ставится двоеточие ":", а затем пишется оператор (может писаться составной оператор), который должен выполняться, если выражение приняло указанное в метке значение.

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

Он прерывает выполнение структуры switch и управление передается следующему за ней оператору.

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

Значения в метках могут содержать константы и константные выражения, которые совместимы по типу с объявленным выражением и которые компилятор может вычислить заранее, до выполнения программы. Недопустимо использование переменных и многих функций. В метках не допускается повторение одних и тех же значений, поскольку в этом случае выбор был бы неоднозначным.

Приведенный ниже пример анализирует переменную Key типа char, содержащую символ, введенный пользователем в ответ на некоторый вопрос. При положительном ответе вызывается процедура FYes, при отрицательном FNo, при иных ответах отображается сообщение об ошибке.

switch (Key)
{
case 'у': case 'Y': { FYes(); break; }
case 'n': case 'N': { FNo(); break; }
default: ShowMessage("Ошибочный ответ");
}

Обратите внимание, что при необходимости выполнять одинаковые действия при нескольких значениях выражения выбора, надо размещать подряд несколько меток case.

Поделиться