Знаки операций обеспечивают формирование выражений. Выражения состоят из операндов, знаков операций и скобок. Каждый операнд является, в свою очередь, выражением или частным случаем выражения – константой или переменной.
Таблица 1
Унарные операции
&
| Получение адреса операнда
|
*
| Обращение по адресу (разыменование)
|
-
| Унарный минус, меняет знак арифметического операнда
|
~
| Поразрядное инвертирование внутреннего двоичного кода целочисленного операнда (побитовое отрицание)
|
!
| логическое отрицание (НЕ). В качестве логических значений используется 0 - ложь и не 0 - истина, отрицанием 0 будет 1, отрицанием любого ненулевого числа будет 0.
|
++
| Увеличение на единицу:
префиксная операция - увеличивает операнд до его использования,
постфиксная операция увеличивает операнд после его использования,
int m=l,n=2;
int a=(m++)+n; // a=4,m=2,n=2
int b=m+(++n);//a=3,m= 1,n=3
|
--
| Уменьшение на единицу:
префиксная операция - уменьшает операнд до его использования, постфиксная операция уменьшает операнд после его использования.
|
sizeof
| Вычисление размера (в байтах) для объекта того типа, который имеет операнд; имеет две формы sizeof выражение sizeof (тип). Примеры: sizeof(float)//4
sizeof(1.0)//8,
т. к. вещественные константы по умолчанию имеют тип double
|
Таблица 2
Бинарные операции
|
+
| бинарный плюс (сложение арифметических операндов)
|
-
| бинарный минус (вычитание арифметических операндов)
|
Мультипликативные:
|
*
| умножение операндов арифметического типа
|
/
| деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление)
|
%
| о получение остатка от деления целочисленных операндов
|
Операции сдвига (определены только для целочисленных операндов).
Формат выражения с операцией сдвига:
операнд левый операция сдвига операнд правый.
|
<<
| сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого операнда, освободившиеся разряды обнуляются
|
>>
| сдвиг вправо битового представления значения правого целочисленного операнда на количество разрядов, равное значению правого операнда, освободившиеся разряды обнуляются, если операнд беззнакового типа и заполняются знаковым разрядом, если - знакового
|
Поразрядные операции:
|
&
| поразрядная конъюнкция (И) битовых представлений значений целочисленных операндов (бит =1, если соответствующие биты обоих операндов=1)
|
|
| поразрядная дизъюнкция (ИЛИ) битовых представлений значений целочисленных операндов (бит =1, если соответствующий бит одного из операндов=1)
|
^
| поразрядное исключающее ИЛИ битовых представлений значений целочисленных операндов (бит =1, если соответствующий бит только одного из операндов=1)
|
~
| поразрядное отрицание битовых представлений значений целочисленных операндов (бит = 1, если соответствующий бит 0)
|
Операции сравнения: результатом являются true (не 0) или false(0)
|
<
| меньше, чем
|
>
| больше, чем
|
<=
| меньше или равно
|
>=
| больше или равно
|
= =
| равно
|
!=
| не равно
|
Логические бинарные операции:
|
&&
| конъюнкция (И) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0)
|
||
| дизъюнкция (ИЛИ) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0)
|
!
|
|
|
|
Условная операция.
В отличие от унарных и бинарных операций в ней используется три операнда.
(Выражение1)? (Выражение2): (Выражение3);
Первым вычисляется значение выражения1. Если оно истинно, то вычисляется значение выражения2, которое становится результатом. Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3.
Например: (x<0)? (-x): (x); //вычисляется абсолютное значение x.
Операция явного (преобразования) приведения типа.
Существует две формы: каноническая и функциональная:
1) (имя_типа) операнд(int)a; //каноническая форма
2) имя_типа (операнд) int(a); //функциональная форма
Таблица 3
Приоритет операций
Ранг
| Операции
|
| (), [], ->
|
| ! ~ - ++--&* (тип) sizeof тип()
|
| * / % (мультипликативные бинарные)
|
| + - (аддитивные бинарные)
|
| << >> (поразрядного сдвига)
|
| <><=>= (отношения)
|
| =!= (отношения)
|
| & (поразрядная конъюнкция «И»)
|
| ^ (поразрядное исключающее «ИЛИ»)
|
| | (поразрядная дизъюнкция «ИЛИ»)
|
| && (конъюнкция «И»)
|
| | | (дизъюнкция «ИЛИ»)
|
| ?: (условная операция)
|
| = *= /= %= -= &= л= |=«=»= (операция присваивания)
|
| , (операция запятая)
|