За исключением особо оговариваемых случаев, операторы выполняютсяпоследовательно.
Большинство операторов являются операторными выражениями, которыеимеют форму
выражение;Обычно операторные выражения являются присваиваниями или обращениямик функциям.
Если какой-либо идентификатор из списка-описаний был описан ранее,то во время выполнения блока внешнее описание подавляется и сновавступает в силу после выхода из блока.
в таком случае эти инициализации не выполняются. Инициализациистатических переменных проводятся только один раз, когда начинаетсявыполнение программы.
Находящиеся внутри блока внешние описания не резервируют памяти, такчто их инициализация не разрешается.
Имеются две формы условных операторов:
if (выражение) оператор if (выражение) оператор else оператор"else"разрешается связываением else с последним встречающимся if, у которогонет else.
Оператор while имеет форму
while (выражение) операторПодоператор выполняется повторно до тех пор, пока значение выраженияостается отличным от нуля. Проверка производится перед каждымвыполнением оператора.
Оператор do имеет форму
do оператор while (выражение)Оператор выполняется повторно до тех пор, пока значение выражения нестанет равным нулю. Проверка производится после каждого выполненияоператора.
Оператор for имеет форму
for( выражениe-1 необ ; выражениe-2 необ ; выражениe-3 необ ) операторОператор for эквивалентен следующему
выражениe-1; while( выражениe-2 ) {
оператор
выражение-3 }
третье выражение часто задает приращение параметра, котороепроводится после каждой итерации.
выше расширения.
Оператор switch (переключатель), вызывает передачу управления к одномуиз нескольких операторов, в зависимости от значения выражения. Операторимеет форму
switch (выражение) операторВ выражении проводятся обычные арифметические преобразования, норезультат должен иметь тип int. Оператор обычно является составным.Любой оператор внутри этого оператора может быть помечен одним или болеевариантным префиксом case, имеющим форму:
case константное выражение:где константное выражение должно иметь тип int. Никакие две вариантныеконстанты в одном и том же переключателе не могут иметь одинаковоезначение. Точное определение константного выражения приводится в п. 24 .
Кроме того, может присутствовать самое большее один операторный префиксвида
default:
При выполнении оператора switch вычисляется входящее в него выражениеи сравнивается с каждой вариантной константой. Если одна из вариантныхконстант оказывается равной значению этого выражения, то управлениепередается оператору, который следует за совпадающим вариантнымпрефиксом. Если ни одна из вариантных констант не совпадает со значениемвыражения и если при этом присутствует префикс default, то управлениепередается оператору, помеченному этим префиксом. Если ни один извариантов не подходит и префикс default отсутствует, то ни одиниз операторов в переключателе не выполняется.
Сами по себе префиксы case и default не изменяют поток управления,которое беспрепятсвенно проходит через такие префиксы. Для выхода изпереключателя смотрите оператор break, п. 18.8 .
Обычно оператор, который входит в переключатель, является составным.Описания могут появляться в начале этого оператора, но инициализацииавтоматических и регистровых переменных будут неэффективными.
Оператор
break;вызывает завершение выполнения наименьшего охватывающего этот оператороператора while, do, for или switch; управление передается оператору,следующему за завершенным оператором.
Оператор
continue;приводит к передаче управления на продолжающую цикл часть наименьшегоохватывающего этот оператор оператора while, do или for; то есть наконец цикла. Более точно, в каждом из операторов
while(...) {
do {
for(...) { ...
...
... contin: ;
contin: ;
contin: ; }
}while(...);
}
оператор continue эквивалентен оператору goto contin. (за contin:следует пустой оператор; см.
п. 18.13
.).
Возвращение из функции в вызывающую программу осуществляется спомощью оператора return, который имеет одну из следующих форм
return; return выражение;В первом случае возвращаемое значение неопределено. Во втором случаев вызывающую функцию возвращается значение выражения. Если требуется,выражение преобразуется к типу функции, в которой оно появляется, какв случае присваивания. Попадание на конец функции эквивалентно возвратубез возвращаемого значения.
Управление можно передавать безусловно с помощью оператора
goto идентификатор1Идентификатор должен быть меткой ( п. 18.12 ), локализованной в данной функции.
Перед любым оператором может стоять помеченный префикс вида
идентификатор:который служит для описания идентификатора в качестве метки. Меткииспользуются только для указания места, куда передается управлениеоператором goto. Областью действия метки является данная функция,за исключением любых подблоков, в которых тот же идентификаторописан снова. Смотри п. 20 .
Пустой оператор имеет форму:
;Пустой оператор оказывается полезным, так как он позволяет поставитьметку перед закрывающей скобкой } составного оператора или указатьпустое тело в операторах цикла, таких как while.
[Назад] [Содержание] [Вперед]
| Главная |