за исключением того, что continue в операторе_2 будет выполнять выражение_2 перед выполнением выражения_1. Первый оператор, таким образом, задает инициализацию цикла; первое выражение задает выполняемую перед каждой итерацией проверку, по которой производится выход из цикла, если выражение станвится нулем; второе выражение часто задает приращение, выпоняемое после каждой итерации.
Каждое или оба выражения могут быть опущены. Отсутствие выражения_1 делает подразумеваемое while-предложение эквивлентым while(1). Заметьте, что если оператор_2 является опсанием, то область видимости описанного имени распространяеся до конца блока, охватывающего оператор for.
9.7 Оператор Switch
Оператор switch вызывает передачу управления на один из нескольких операторов в зависимости от значения выражения. Он имеет вид
switch ( выражение ) оператор
Выражение должно быть арифметичского или указательного типа. Любой оператор внутри оператора может быть помечен оной или более меток case следующим образом:
case константное_выражение :
где константное выражение должно иметь тот же тип что и выражение-переключатель; производятся обычные арифметические преобразования. В одном операторе switch никакие две констаты, помеченные case, не могут иметь одинаковое значение. Константные выражения определяются в #12.
Также может быть не более чем одна метка вида
default :
Когда выполнен оператор switch, проведено вычисление его выражения и сравнение его с каждой case константой. Если одна из констант равна значению выражения, то управление передаеся на выражение, следующее за подошедшей меткой case. Если никакая case константа не соответствует выражению, и есть метка default, то управление передается на выражение, которму она предшествует. Если нет соответсвующих вариантов case и default отсутствует, то никакой из операторов в операторе switch не выполняется.
Метки case и default сами по себе не изменяют поток уравления, который после задерки идет дальше, перескакивая чрез эти метки. Для выхода из switch см. break, #9.8.
Обычно зависящий от switch оператор является составным. В голове этого оператора могут стоять описания, но инициалзации автоматических и регистровых переменных являются безрзультатными.
9.8 Оператор Break
Оператор
break ;
вызывает завершение выполнения наименьшего охватывающего оператора while, do, for или switch; управление передается на
оператор, следующий за завершенным.
9.9 Оператор Continue
Оператор
continue ;
вызывает передачу управления на управляющую продолжением цикла часть наименьшего охватывающего оператора while, do или for; то есть на конец петли цикла. Точнее, в каждом из оперторов
while (...) (* do (* for (...) (* ... ... ... contin: ; contin: ; contin: ; *) *) while (...); *)
continue эквивалентно goto contin. (За contin: идет путой оператор, #9.13.)
9.10 Оператор Return
Возврат из функции в вызывающеую программу осуществляеся с помощью оператора return, имеющего один из двух видов:
return ; return выражение ;
Первый может использоваться только в функциях, не возвращающих значения, т.е. в функциях с типом возвращаемого значения void. Вторая форма может использоваться только в функциях, возвращающих значение; значение выражения возвращется тому, кто вызывал функцию. Если необходимо, то выражение преобразуется, как это делается при инициализации, к типу функции, в которой оно появилось. Обход конца функции эквивлентен возврату return без возвращаемого значения.
9.11 Оператор Goto
Можно осуществлять безусловную передачу упраления с пмощью оператора
goto идентификатор ;
Идентификатор должен быть меткой (#9.12), расположенной в текущей функции. Невозможно передать управление в обход описания с инициализатором (явным или неявным) никак, кроме передачи управления в обход внутреннего блока без захода в него.
9.12 Помеченные Операторы
Перед любым оператором может стоять метка, имеющий вид
идентификатор :
которая служит для описания идентификатора как метки. Метка используется только как объект перехода для goto. Оластью видимости метки является текущая функция, исключая лбой подблок, в котором был переописан этот же идентификатор. См. #4.1.
9.13 Пустой Оператор
Пустой оператор имеет вид
;
Пустой оператор используется для помещения метки непоредственно перед *) составного оператора или того, чтобы снабдить такие операторы, как while, пустым телом.
9.14 Оператор Описание
Оператор описание используется для введения нового идетификатора в блоке; он имеет вид
Оператор_описание: описание
Если введенный описанием идентификатор был описан ранее во внешнем блоке, внешнее описание становится скрытым на пртяжении блока, после чего оно вновь всупает в силу.