С предоставляет два полезных оператора, обычно отсутствующих в других языках. Это операторы уменьшения и увеличения, ++ и --. Оператор ++ добавляет 1 к операнду, а -- вычитает 1. Поэтому следующие операторы эквивалентны:
х = х + 1;
это то же самое, что и
++ х;
Аналогично
х = х - 1;
это то же самое, что и
--х;
Как оператор увеличения, так и оператор уменьшения могут стоять перед операндом (префиксный) или после операнда (постфиксный). Например:
х = х + 1;
может быть записано как
++ х;
или
х ++;
Тем не менее, существует разница использования префиксного и постфиксного операторов в выражениях. Когда оператор увеличения или уменьшения стоит перед операндом, С производит увеличение или уменьшение до получения значения операнда. Если оператор следует за операндом, С получает значение операнда перед его увеличением или уменьшением. Рассмотрим следующий пример:
х = 10;
у = ++x;
В этом случае у устанавливается в значение 11. А если записать это как
х = 10;
у = x++;
то y будет иметь значение 10. В обоих случаях х устанавливается в 11. Бывает необходимо контролировать последовательность операций увеличения или уменьшения.
Приоритет выполнения арифметических операций следующий:
высший | + (унарный плюс) - (унарный минус) ++ -- * / % |
низший | + - (бинарные операторы) |
Операторы, обладающие одним приоритетом, вычисляются компилятором слева направо. Круглые скобки могут использоваться для изменения порядка вычисления. Круглые скобки в С трактуются так же, как и во всех остальных языках — они устанавливают наивысший приоритет операций.