Операции инкремент и декремент
Бинарные и тернарные операции
Унарные
Операции
Выражения
Выражение состоит из операндов и знаков операции и используется для вычисления значения определенного типа.
| Приоритет | Действие |
| + + увеличить на 1 - - уменьшить на 1 | |
| ~ поразрядное отрицание ! логическое отрицание - арифметическое отрицание | |
| + унарный плюс | |
| & взятие адреса | |
| * разыменование разадресация | |
| (type) преобразование типа | |
| sizeof размер |
| Приоритет | Действие |
| * умножение / деление % остаток от деления | |
| + сложение - вычитание | |
| << сдвиг влево >> сдвиг вправо | |
| < меньше <= меньше или равно > больше >= больше или равно | |
| = = равно ! = не равно | |
| & поразрядная конъюнкция И | |
| ^ поразрядное исключающее ИЛИ | |
| | поразрядная дизъюнкция | |
| && логическое И | |
| | | логическое ИЛИ | |
| ?: условная операция (тернарная) | |
| = присваивание * = умножение с присваиванием / = деление с присваиванием % = остаток от деления с присваиванием + = сложение с присваиванием - = вычитание с присваиванием << = сдвиг влево с присваиванием >> = сдвиг вправо с присваиванием & = поразрядное И с присваиванием | = поразрядное ИЛИ с присваиванием ^ = поразрядное искл. ИЛИ с присваиванием | |
| , последовательное вычисление |
Каждый операнд может быть выражением, или в частном случае – константой или переменной.
Если операции одного приоритета, то
§ справа налево вычисляются
- унарные операции,
- условная операция,
- операция присваивания a=b=c равносильно a=(b=c).
§ слева направо вычисляются все остальные.
a+b+с равносильно (a+b)+c,
a>b>c равносильно (a>b)>c.
Для изменения порядка вычислений используют круглые скобки.
Результат вычисления выражения имеет значение и тип. Если операнды имеют одинаковый тип, тот же тип имеет результат выражения.
Если типы операндов различны, то перед вычислением выполняются преобразования типов (от более коротких к более длинным для сохранения значимости и точности).
При этом может измениться внутреннее представление (int ® float) или интерпретация внутреннего представления (char ® unsigned short int).
+ + и - - две формы записи:
префиксная <операция> <операнд>
постфиксная <операнд> <операция>
Префиксная форма:
Операнд изменяется, новое значение – результат выражения.
Постфиксная форма:
Результат выражения – исходное значение операнда, после вычисления выражения операнд изменяется.
Операнд – в общем случае это L – значение.
L – значение – это любое выражение, адресующее некоторый участок памяти, в который можно занести значение.
b=1;
a= + + b; (a=2, b=2)
c=b + +; (c=2, b=3)
b=4;
c= b - -; (c=4, b=3)
a= - - b; (a=2, b=2)
int x = 3, y;
арифметическое
y = -x; /*y=-3*/;
поразрядное
y= ~ x; /*y= 0011 -> 1100 -> -4;*/
логическое
y=!x; /* y= 0*/






