Операции
Операции в языке Си имеют либо один операнд (унарные операции), либо два операнда (бинарные операции), либо три (тернарная операция). Операция присваивания может быть как унарной, так и бинарной (см. раздел 4.4).
Существенным свойством любой операции является ее ассоциативность. Ассоциативность определяет порядок выполнения в том случае, когда подряд применено несколько операций одного вида. Ассоциативность "слева направо" означает, что первой будет выполняться операция, знак которой записан левее остальных. Например, выражение
b << 2 << 2
выполняется как (b << 2) << 2, а не как b << (2 << 2). Ассоциативность "справа налево" означает, что первой будет выполняться операция, знак которой записан правее остальных.
В языке Си реализованы следующие унарные операции:
Знак операции | Наименование |
- | унарный минус |
+ | унарный плюс |
~ | обратный код |
! | логическое отрицание |
& | адресация |
* | косвенная адресация |
sizeof | определение размера |
Примечание. Операция унарного плюса реализована полностью только в СП ТС. В СП MSC версии 4 она отсутствует, а в версии 5 реализована только синтаксически.
Унарные операции предшествуют своему операнду и ассоциируются справа налево.
В языке Си реализованы следующие бинарные операции:
Знак | Наименование |
* / % | мультипликативные операции |
+ - | аддитивные операции |
<< >> | операции сдвига |
< > <= >= == != | операции отношения |
& | ^ | поразрядные операции |
&& || | логические операции |
, | операция последовательного вычисления |
Бинарные операции ассоциируются слева направо. В языке Си имеется одна тернарная операция — условная, обозначаемая ?:. Она ассоциируется справа налево.