Знаки операций обеспечивают формирование выражений. Выражения состоят из операндов, знаков операций и скобок. Каждый операнд является, в свою очередь, выражением или частным случаем выражения – константой или переменной.
Таблица 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 тип()
|
|
| * / % (мультипликативные бинарные)
|
|
| + - (аддитивные бинарные)
|
|
| << >> (поразрядного сдвига)
|
|
| <><=>= (отношения)
|
|
| =!= (отношения)
|
|
| & (поразрядная конъюнкция «И»)
|
|
| ^ (поразрядное исключающее «ИЛИ»)
|
|
| | (поразрядная дизъюнкция «ИЛИ»)
|
|
| && (конъюнкция «И»)
|
|
| | | (дизъюнкция «ИЛИ»)
|
|
| ?: (условная операция)
|
|
| = *= /= %= -= &= л= |=«=»= (операция присваивания)
|
|
| , (операция запятая)
|