выражение ;

Обычно операторы выражение являются присваиваниями и взовами функций.

9.2 Составной Оператор, или Блок

Составной оператор (называемый также «блок», что эквивлентно) дает возможность использовать несколько операторов в том месте, где предполагается использование одного:

составной_оператор: (* список_операторов opt *)

список_операторов: оператор оператор список_операторов

Обратите внимание, что описание – это вариант оператора (#9.14).

9.3 Условный Оператор

Есть два вида условных операторов

if ( выражение ) оператор if ( выражение ) оператор else оператор

Выражение должно быть арифметического или указательного типа или классового типа, для которого определено преобразвание в арифметический или указательный тип (см. #8.5.6). Вчисляется выражение, и если оно не ноль, то выполняется певый подоператор. Если используется «else», то второй подоператор выполняется, если выражение есть 0. Как обычно, неоднозначность «else» разрешается посредством того, что else связывается с последним встречнным if, не имеющим else.

9.4 Оператор While

Оператор while имеет вид

while ( выражение ) оператор

Выполнение подоператора повторяется, пока значение выржения остается ненулевым. Проверка выполняется перед каждым выполнением оператора. Выражение обрабатывается как в услоном операторе (#9.3).

9.5 Оператор Do

Оператор do имеет вид

do оператор while ( выражение ) ;

Выполнение подоператора повторяется до тех пор, пока значение остается не нулем. Проверка выполняется после каждго выполнения оператора. Выражение обрабатывается как в уловном операторе (#9.3).

9.6 Оператор For

Оператор for имеет вид

for (оператор_1 выражение_1 opt; выражение_2 opt) оператор_2

Этот оператор эквивалентен следующему:

оператор_1 while ( выражение_1 ) (* оператор_2 выражение_2 ; *)

за исключением того, что 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 Пустой Оператор

Вы читаете C++
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату