Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по С++.doc
Скачиваний:
52
Добавлен:
02.05.2014
Размер:
995.33 Кб
Скачать

R.6.4.2 Оператор переключателя

Оператор переключателя вызывает передачу управления на один из нескольких операторов в зависимости от значения выражения. Выражение должно быть целочисленного типа или типа класса, для которого существует однозначное преобразование к целочисленному типу ($$R.12.3). Выполняются стандартные целочисленные преобразования. Любой из операторов переключателя можно пометить одним или несколькими префиксами, имеющими вид: case выражение-константа : Здесь выражение-константа ($$R.5.19) приводится к преобразованному типу выражения переключателя. Никакие две константы из case одного переключателя не должны иметь одинаковое значение. В переключателе может быть только один префикс вида default: Операторы переключателя могут быть вложенными, тогда метки из case или default относятся к самому первому переключателю, объемлющему их. При выполнении оператора переключателя вычисляется выражение, и его значение сравнивается с каждой из констант вариантов (case). Если одна из этих констант равна значению выражения, то управление передается в оператор, идущий за этой константой. Если ни одна из констант не совпала со значением выражения, но есть префикс default, то управление передается на оператор с этим префиксом. Если префикса default нет, и совпадения не было, то не выполняется ни один из операторов переключателя. Если операторы, выполняемые в результате выбора, не приводят к каким-либо передачам управления, то программа продолжает выполняться "по меткам case и default" беспрепятственно. Выход из переключателя возможен с помощью оператора break (см. $$R.6.6.1). Обычно оператор, с которым имеет дело переключатель, бывает составным. Описания могут появиться в операторах переключателя. Однако переход ниже описания, в котором была явная или неявная инициализация, считается незаконным, если только описание не находится во внутреннем блоке, который обходится (т.е. полностью обходится при передаче управления, $$R.6.7). Отсюда следует, что описание с явной или неявной инициализацией должно содержаться во внутреннем блоке.

R.6.5 Операторы цикла

Эти операторы задают виды цикла. оператор-цикла: while ( выражение ) оператор do оператор while (выражение) for ( оператор-иниц выражение opt ; выражение opt ) оператор оператор-иниц: оператор-выражение оператор-описание Обратите внимание, что конструкция оператор-иниц кончается точкой с запятой. Оператор в операторе-цикла не должен быть описанием.

R.6.5.1 Оператор while

В операторе while вложенный оператор выполняется до тех пор, пока значение выражения не станет равным нулю. Проверка происходит перед каждым выполнением оператора. Выражение должно быть арифметического типа, или типа указателя, или типа класс, для которого существует однозначное преобразование в арифметический тип или тип указателя ($$R.12.3).

R.6.5.2 Оператор do

В операторе do вложенный оператор выполняется до тех пор, пока значение выражения не станет равным нулю. Проверка происходит после каждого выполнения оператора. Выражение должно быть арифметического типа, или типа указателя, или типа класс, для которого существует однозначное преобразование в арифметический тип или тип указателя ($$R.12.3).