Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбельский Фомин_Программирование на языке СИ_...doc
Скачиваний:
356
Добавлен:
10.08.2019
Размер:
53.81 Mб
Скачать

1.4. Операции

В этом параграфе достаточно лаконично определяются все операции языка Си и приводится таблица их приоритетов. Хотя в ближайших параграфах (где вводятся выражения и основные операторы языка) нам понадобятся не все знаки операций и нередко будет достаточно интуитивного представления об их старшинстве и ассоциативности, но материал этого параграфа слишком важен, чтобы говорить о нем позже. В последующих главах применение операций языка будет рассмотрено подробно, но к таблице приоритетов стоит обращаться и при дальнейшем чтении, и при написании программ.

Знаки операций.

Знаки операций. Для формирования и последующего вычисления выражений используются операции. Для изображения одной операций в большинстве случаев используется несколько символов. В табл. 1.4 приведены все знаки операций, определенные стандартом языка. Операции в таблице разбиты на группы в соответствии с их рангами.

За исключением операций "[ ]", "( )" и "?:", все знаки операций распознаются компилятором как отдельные лексемы. В зависимости от контекста одна и та же лексема может обозначать разные операции, т.е. один и тот же знак операции может употребляться в различных выражениях и по-разному интерпретироваться в зависимости от контекста. Например, бинарная операция & - это поразрядная конъюнкция, а унарная операция & - это операция получения адреса.

Операции ранга 1 имеют наивысший приоритет. Операции одного ранга имеют одинаковый приоритет, и если их в выражении несколько, то они выполняются в соответствии с правилом ассоциативности либо слева направо (), либо справа налево (). Если один и тот же знак операции приведен в таблице дважды (например, знак *), то первое появление (с меньшим по номеру, т.е. старшим по приоритету, рангом) соответствует унарной операции, а второе - бинарной.

Опишем кратко возможности отдельных операций.

Приоритеты (ранги) операций

Ранг

Операции

Ассоциативность

1

0 [ ] -> .

2

! ~ + _ ++ — & * (тип) sizeof

3

* / % (мультипликативные бинарные)

4

+ - (аддитивные бинарные)

5

<< >> (поразрядного сдвига)

6

< <= >= > (отношения)

7

= != (отношения)

8

& (поразрядная конъюнкция "И")

9

^ (поразрядное исключающее "ИЛИ")

10

| (поразрядная дизъюнкция "ИЛИ")

11

&& (конъюнкция "И")

12

|| (дизъюнкция "ИЛИ")

13

?: (условная операция)

14

= *= /= %= += -= &= ^= |= <<= >>=

15

, (операция "запятая")