Основными выражениями являются следующие:
выражение:
первичное-выражение
* выражение
& выражение
- выражение
! Выражение
\^ выражение
++ L-значение
-- L-значение
L-значение ++
L-значение --
SIZEOF выражение
(имя типа) выражение
выражение бинарная-операция выражение
выражение ? Выражение : выражение
L-значение операция-присваивания выражение
выражение , выражение
первичное выражение:
идентификатор
константа
строка
(выражение)
первичное-выражение (список выражений
необ)
первичное-выражение [выражение]
L-значение . Идентификатор
первичное выражение -> идентификатор
L-значение:
идентификатор
первичное-выражение [выражение]
L-значение . Идентификатор
первичное-выражение -> идентификатор
* выражение
(L-значение)
Операции первичных выражений
() [] . ->
имеют самый высокий приоритет и группируются слева
направо. Унарные операции
* & - ! \^ ++ -- SIZEOF(Имя типа)
имеют более низкий приоритет, чем операции первичных выраже-
ний, но более высокий, чем приоритет любой бинарной опера-
ции. Эти операции группируются справа налево. Все бинарные
операции и условная операция (прим. Перевод.: условная опе-
рация группируется справа налево; это изменение внесено в
язык в 1978 г.) группируются слева направо и их приоритет
убывает в следующем порядке:
Бинарные операции:
* / %
+ -
>> <<
< > <= >=
== !=
&
\^
\!
&&
\!\!
?:
Все операции присваивания имеют одинаковый приоритет и груп-
пируются справа налево.
Операции присваивания:
= += -= *= ?= %= >>= <<= &= \^= \!=
Операция запятая имеет самый низкий приоритет и группируется
слева направо.