ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Переключатели switch и breakОператор switch является аналогом case в Паскале По сравнению с case оператор switch имеет несколько особенностей, на которые необходимо обратить внимание, формат его следующий: switch (выражение) { case значение1: последовательность операторов_1; case значение2: последовательность_операторов_2; ... case значениеN: последовательность операторовN; [ default: последовательность операторов DEFAULT] } Вычисляется значение выражения, которое последовательно сравнивается со значениями, указанными в разделах case. Как только находится подходящее значение, управление передается на соответствующую последовательность_операторов, а вот дальше... выполняются все операторы, расположенные ниже (включая раздел default, если таковой имеется). То есть, начиная с точки входа, тело оператора switch выполняется "насквозь", что неизменно вызывает удивление у тех, кто привык программировать на Паскале. Приведем короткий пример: а=3; switch (a) { case 1:printf("один "); printf("l "); case 2:printf("два "); printf ("2 "); case 3:printf("три "); printf("3 "); case 4:printf("четыре "); printf("4 "); case 5:printf("пять "); printf("5 "}; default: printf("много "); printf("> ");} В результате выполнения этого оператора на печать будет выведено: "три 3 четыре 4 пять 5 много >". Но это же жутко неудобно, скажете вы! Оператор case в Паскале устроен гораздо удобнее! Ничего подобного! Просто switch более гибок. Для того чтобы прервать его выполнение в любой момент, можно использовать break. Для придания оператору "нормального" вида его надо переписать в виде: а=3; switch (a) { case 1:printf("один "); printf ("I "); break; case 2:printf("два "); printf("2 "); break; case 3:printf("три "); printf("З "); break; case 4:printf("четыре "); printf("4 "); break; case 5:printf("пять "); printf ("5 "); break; default: printf("много "); printf ("> ");} В этом случае после выполнения соответствующей последовательности операторов мы "вывалимся" из оператора switch (управление будет передано на первый оператор после закрывающей фигурной скобки). Замечание. К сожалению, в case нельзя задавать диапазон значений. Если в Паскале метка оператора выбора может иметь следующий вид: 1..3,6,9..11, то в Си приходится писать громоздкую конструкцию: case 1:case 2:case 3:case 6:case 9:case 9:case 10:case 11:
Не нашли, что искали? Воспользуйтесь поиском:
|