Инструкции

Справочный раздел

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

Разделы инструкций

В сети

Пользователей: 148
Из них просматривают:
Аналоги: 86. Видео: 2. Галерея: 3. Даташиты: 14. Инструкции: 27. Новости: 3. Остальное: 3. Партнёры: 1. Теги: 3. Форум: 6.
Участников: 2
Гостей: 146

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

Оператор switch

Анализ разных значений переменной при помощи оператора if может вылиться в «многоэтажную» конструкцию типа такой:

 

if (x == 0) x = 5;

else

    if (x == 1) x = 12;

    else

         if (x == 3) x = 36;

         // и т.д. до перебора всех вариантов значения х

 

Это очень неудобная конструкция. Заменить ее призван оператор switch, который записывается по следующему шаблону:

 

    switch (<выражение>){

        case <значение1>: [операторы1];

        case <значение2> : [операторы2];

        // и т.д. до конца вариантов значений

        [default : [операторы по умолчанию]];

   }

 
Здесь выражение - это выражение, значения которого анализируются, значение1 -это один из вариантов анализируемого результата выражения, операторы! - соответствующая этому варианту обработка, значение2 и операторы2 - это соответственно следующее анализируемое значение и соответствующая ему обработка и т.д. Операторы по умолчанию выполняются в том случае, если выражение имеет значение, не соответствующее ни одному из определенных в строке с ключевым словом case. Операторы по умолчанию и ключевое слово default могут отсутствовать.

 
Результат анализируемого выражения обязательно должен быть одного из целочисленных типов, а в качестве значений case обязательно должны использоваться константы или выражения, вычисляемые на основе констант. Допускается использовать символы (в апострофах).

 

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

int res;

switch (x){

      case 0 : res = 1;

      case 1 : res = 2;

      default : res = 3;

}

 
Если x в этом примере равен 5, то значение переменной res станет равно 3. Однако, если х будет равен 0, то res все равно окажется равным 3, т.к. поочередно выполнятся все операторы, начиная с того, что указан в строке case 0. Чтобы этого бессмысленного поведения не происходило, введен особый оператор break, который вызывает прекращение работы оператора switch досрочно, т.е. этот оператор является последним исполняемым оператором внутри switch. Таким образом, правильная запись желаемого алгоритма должна быть такой:

 

int res;

switch (x){

      case 0 : res = 1; break;

      case 1 : res = 2; break;

      default : res = 3;

}

 
В этом случае для х равного 0, 1 и 5 будут получены соответственно значения res 1, 2 и 3. Для последнего варианта наличие «прекращающего» оператора не требуется, это очевидно.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Цинк для изготовления паяльной кислоты можно найти в старых батарейках питания.