Операции инкрементации и декрементации являются унарными операциями, то есть операциями, имеющими один операнд.
операнд++
++операнд
Операция инкрементации ++ добавляет к операнду единицу.
операнд--
--операнд
Операция декрементации -- вычитает из операнда единицу.
Операндом может быть именующее выражение, например, имя переменной.
Приоритет этих операций определяется таблицей приоритетов языка Си (Приоритеты операций).
Следующие три строки увеличивают переменную x на 1:
x = x + 1;
++x;
x++;
Операции инкрементации и декрементации имеют префиксную (++x, --x ) и постфиксную (x++, x--) форму записи. Они удобны при использовании в более сложных, чем приведенный пример, выражениях.
При префиксной форме записи операнд увеличивается или уменьшается сразу же, а после этого используется.
Пример 1
x = 3;
y = ++x;
Переменная х сразу же увеличивается до 4 и это значение присваивается переменной y.
При постфиксной форме записи операнд увеличивается или уменьшается после того, как он используется.
Пример 2
x = 3;
y = x++;
Переменной y присваивается значение 3, а затем переменная х увеличивается до 4.
Эти операции используются для сокращения текста программы и облегчения набора программы с клавиатуры, и для большинства компьютеров повышают эффективность работы программы. Они часто используются для увеличения или уменьшения индекса массива при переборе его элементов.
Но при работе с операциями инкрементации и декрементации надо быть осторожными: их операнд, являющийся именующим выражением, не следует использовать более одного раза в одном и том же выражении.
Пример 3
/*Пример плохого стиля:*/
array[num] = ++num;
Различные компиляторы могут интерпретировать это выражение по-разному и нельзя точно сказать, какой результат будет получен. Возьмите себе за правило: переменную, увеличиваемую или уменьшаемую в данном выражении, используйте в нем только один раз.
Пример 4
/*Более ясный стиль:*/
array[num] = num + 1;
++num;
Пример 5
i = 0;
while (i < size)
   {
    table[i] = 0;
    i = i+1;
   }
Пример 6
/*Эквивалентный примеру 5*/
i = 0;
while (i < size)
    table[i++] = 0;