Скачиваний:
8
Добавлен:
01.05.2014
Размер:
130.56 Кб
Скачать

2) Описания

Описаниями специфицируется то, каким образом интерпретируется каждый идентификатор.

описание: [const] спецификатор_типа иниц_описатель { , иниц_описатель}

иниц_описатель: описатель описатель = инициализатор

спецификатор_типа: int double vector [ выражение ] limited-спецификатор typedef-имя

Выражение в квадратных скобках после ключевого слова vector задаёт размерность. Максимальная размерность вектора – 8100.

Ограниченный тип – целый тип, значения которого лежат в заданном интервале.

limited-спецификатор: limited { левая_граница .. правая_граница }

Например, если переменная y2k объявлена как limited {1990..2000} y2k, она сможет принимать целые значения от 1990 до 2000 включительно.

описатель: идентификатор описатель [ без_знака ]

Беззнаковое число в квадратных скобках обозначает количество элементов массива. Допускаются многомерные массивы; максимальная размерность массива – 16.

Инициализаторы позволяют давать начальные значения переменным.

инициализатор: выражение { инициализатор { , инициализатор } }

Собственные типы можно определять при помощи описания typedef.

typedef-описание: typedef спецификатор_типа typedef-имя

typedef-имя: идентификатор

1.5. Выражения

выражение: выражение_присваивания

Приоритеты описываемых операторов имеют тот же порядок, что и подразделы данного параграфа. Например, для оператора +, описанного в 5), термин "операнды" означает "выражения, определённые в 1)-5)". В каждом разделе описываются операторы одного приоритета и указывается их ассоциативность.

1) Первичные выражения

первичное_выражение: идентификатор константа ( выражение )

2) Постфиксные выражения

В постфиксных выражениях операторы выполняются слева направо.

постфиксное_выражение: первичное_выражение постфиксное_выражение [ выражение ]

Постфиксное выражение, за которым следует выражение в квадратных скобках – ссылка на элемент массива или вектора. Тип результата соответствует типу элемента массива или вектора.

3) Унарные операторы

Выражения с унарными операторами выполняются справа налево.

унарное_выражение: постфиксное_выражение len ( идентификатор_вектора ) унарный_оператор унарное_выражение

унарный_оператор: + - !

Оператор len возвращает евклидову норму вектора – квадратный корень суммы квадратов вектора.

4) Мультипликативные операторы

Мультипликативные операторы *, / и % выполняются слева направо.

мультипликативное_выражение: унарное_выражение мультипликативное_выражение * унарное_выражение мультипликативное_выражение / унарное_выражение

Бинарный оператор * означает умножение, / - деление. Если оба операнда оператора * - векторы, результатом является их скалярное произведение (тип – double). Если один операнд оператора * - вектор, а другой – число, результатом является вектор, полученный из исходного умножением каждого элемента на число. Вектора не могут участвовать в качестве операндов оператора /.

5) Аддитивные операторы

Аддитивные операторы + и – выполняются слева направо.

аддитивное_выражение: мультипликативное_выражение аддитивное_выражение + мультипликативное_выражение аддитивное_выражение - мультипликативное_выражение

Результат выполнения оператора + есть сумма его операндов. Число можно складывать с числом, вектор с вектором, другие комбинации недопустимы. Аналогичное правило распространяется на оператор -.

6) Операторы отношения

Операторы отношения выполняются слева направо.

выражение_отношения: выражение_отношения < аддитивное_выражение выражение_отношения > аддитивное_выражение выражение_отношения <= аддитивное_выражение выражение_отношения >= аддитивное_выражение выражение_отношения == аддитивное_выражение выражение_отношения != аддитивное_выражение

Операторы отношения возвращают 0, если специфицируемое выражение ложно, и 1, если оно истинно. Тип результата – int.

7) Оператор логического И

Операторы && выполняются слева направо. Если оба операнда не равны нулю, возвращается 1, в противном случае – 0.

И-выражение: выражение_отношения И-выражение && выражение_отношения

8) Оператор логического ИЛИ

Операторы || выполняются слева направо. Если хотя бы один операнд не равен нулю, возвращается 1, в противном случае – 0.

ИЛИ-выражение: И-выражение ИЛИ-выражение || И-выражение

9) Выражение присваивания

Операторы присваивания выполняются справа налево.

выражение_присваивания: ИЛИ-выражение постфиксное_выражение = выражение_присваивания

Операторы присваивания в качестве левого операнда требуют l-value, при чём модифицируемого, то есть оно не может быть массивом. Типы левого и правого операндов должны совпадать. Результат выражения присваивания – значение его левого операнда после завершения присваивания.

1.6. Операторы

За исключением особо оговоренных случаев, операторы выполняются в том порядке, в котором они описаны. Операторы не имеют значений и выполняются, чтобы произвести определённые действия.

оператор: метка: { метка: } оператор_без_метки

оператор_без_метки: оператор-выражение составной_оператор условный_оператор оператор_цикла оператор_перехода оператор_ввода оператор_вывода

Метка состоит из идентификатора и одновременно является объявлением этого идентификатора. У меток своё пространство имён и они не конфликтуют с другими идентификаторами.

Соседние файлы в папке Курсовая работа