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

R.5.19 Выражения-константы

В нескольких местах описания С++ требуются выражения, которые дают в результате целочисленную константу, например: в задании границ массива ($$R.8.2.4), в выражениях case ($$R.6.4.2), для задания длины битового поля ($$R.9.6) и как инициализирующее значение элемента перечисления ($$R.7.2). выражение-константа: выражение-условия В конструкции выражение-константа могут участвовать: литералы ($$R.2.5), элементы перечисления, значения целочисленного типа со спецификацией const, инициализированные выражением-константой ($$R.8.4) и выражения sizeof. Константы с плавающей точкой ($$R.2.5.3) должны быть приведены к целочисленному типу. Допустимы только преобразования типа к целочисленному типу. В частности не допустимы функции, объекты классов, указатели и ссылки, если не считать их использования в sizeof. Операция запятая и операция присваивания не допустимы в выражении-константе.

R.6 Операторы

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

R.6.1 Помеченный оператор

Оператор можно снабдить меткой. помеченный-оператор: идентификатор : оператор case выражение-константа : оператор default : оператор Использование идентификатора в качестве метки является ее определением. Идентификатор метки может использоваться помимо этого только в качестве указания перехода в операторе goto. Областью видимости метки является функция, в которой она появилась. Метки нельзя повторно описывать в пределах одной функции. Нельзя использовать метку в операторе goto до ее определения. Метки имеют свое пространство именования и они не вступают в коллизию с другими идентификаторами. Метки в case или default могут встречаться только в операторе переключателя.

R.6.2 Оператор-выражение

Чаще всего операторами бывают выражения; в этом случае оператор имеет такой вид: оператор-выражение: выражение opt ; Обычно операторы-выражения являются присваиваниями или вызовами функций. Все побочные эффекты выполнения оператора-выражения происходят до выполнения следующего оператора. Оператор-выражение с отсутствующим выражением называется пустым оператором. Он может пригодиться, если необходимо поставить метку перед самым концом составного оператора ({) или для задания пустого тела оператора цикла while ($$R.6.5.1).

R.6.3 Составной оператор или блок

Для тех случаев, когда вместо одного оператора нужно использовать несколько, предусмотрен составной оператор (иногда его называют "блок"). составной-оператор: { список-операторов opt } список-операторов: оператор список-операторов оператор Отметим, что описание считается оператором ($$R.6.7).

R.6.4 Выбирающий оператор

Выбирающие операторы выбирают одну из нескольких структур управления. выбирающий-оператор: if ( выражение ) оператор if ( выражение ) оператор else оператор switch ( выражение ) оператор Оператор в выбирающем-операторе не может быть описанием.

R.6.4.1 Оператор if

Выражение должно быть арифметического типа, или типа указателя, или типа класс, для которого существует однозначное преобразование в арифметический тип или тип указателя ($$R.12.3). Вычисляется выражение, и если оно имеет отличный от нуля результат, выполняется первый вложенный оператор. Если использована конструкция else и выражение дает результат 0, выполняется второй вложенный оператор. Неоднозначность в случае нескольких конструкциями else разрешается путем отнесения else к последнему встретившемуся if, для которого не было else.