Справочник языка Cи


Операции


Операции — это комбинации символов, специфицирующие действия по преобразованию значений. Компилятор языка Си интерпретирует каждую из этих комбинаций как самостоятельную лексему.

В таблице 1.3. представлен список операций. Операции должны использоваться точно так, как они представлены в таблице,' без пробельных символов между символами в тех операциях, которые представлены несколькими символами.

Операция sizeof не включена в эту таблицу, поскольку задается ключевым словом, а не символом.

Таблица 1.3.

Операция

Наименование

Операция

Наименование



!

Логическое НЕ

^

Поразрядное исключающее ИЛИ

~

Обратный код

&&

Логическое И

+

Сложение; унарный плюс

||

Логическое ИЛИ

-

Вычитание; унарный минус

?:

Условная операция

*

Умножение; косвенная адресация

++

Инкремент

/

Деление

--

Декремент

%

Остаток от деления

=

Простое присваивание

<< 

Сдвиг влево

+=

Присваивание со сложением

>> 

Сдвиг вправо

-=

Присваивание с вычитанием

Меньше

*=

Присваивание с умножением

<=

Меньше или равно

/=

Присваивание с делением

Больше

%=

Присваивание с остатком от деления

>=

Больше или равно

>>=

Присваивание со сдвигом вправо

==

Равно

<<=

Присваивание со сдвигом влево

!=

Не равно

&=

Присваивание с поразрядным И

&

Поразрядное И; адресация

|=

Присваивание с поразрядным включающим ИЛИ

|

Поразрядное включающее ИЛИ

^=

Присваивание с поразрядным исключающим ИЛИ

,

Последовательное выполнение (запятая)

Примечание. Условная операция ?: является не двухсимвольной, а тернарной (трехоперандной) операцией. Она имеет следующий формат: <операнд1> ? <операнд2> : <операнд3>


Операции в языке Си имеют либо один операнд (унарные операции), либо два операнда (бинарные операции), либо три (тернарная операция). Операция присваивания может быть как унарной, так и бинарной (см. раздел 4.4).

Существенным свойством любой операции является ее ассоциативность. Ассоциативность определяет порядок выполнения в том случае, когда подряд применено несколько операций одного вида. Ассоциативность "слева направо" означает, что первой будет выполняться операция, знак которой записан левее остальных. Например, выражение

b << 2 << 2

выполняется как (b << 2) << 2, а не как b << (2 << 2). Ассоциативность "справа налево" означает, что первой будет выполняться операция, знак которой записан правее остальных.

В языке Си реализованы следующие унарные операции:

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

Наименование

-

унарный минус

+

унарный плюс

~

обратный код

!

логическое отрицание

&

адресация

*

косвенная адресация

sizeof

определение размера

Примечание. Операция унарного плюса реализована полностью только в СП ТС.

В СП MSC версии 4 она отсутствует, а в версии 5 реализована только синтаксически.

Унарные операции предшествуют своему операнду и ассоциируются справа налево.

В языке Си реализованы следующие бинарные операции:

Знак

Наименование

* / %

мультипликативные операции

+ -

аддитивные операции

<< >>

операции сдвига

< > <= >= == !=

операции отношения

& | ^

поразрядные операции

&& ||

логические операции

,

операция последовательного вычисления

Бинарные операции ассоциируются слева направо. В языке Си имеется одна тернарная операция — условная, обозначаемая ?:. Она ассоциируется справа налево.



Содержание раздела