Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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:

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных