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