Operadores de Incremento e Decremento
Incrementar ou decrementar algum número por 1 é muito comum, portanto existem operadores para fazer isso de forma concisa.
Operadores de Prefixo ++ e --
Esses operadores unários ficam à esquerda de seus operandos e os modificam,
incrementando (no caso de ++) ou decrementando (no caso de --) o valor em 1.
int n = 5;
++n; // Incrementa n em 1
printf("%d\n", n); // Exibe 6
--n; // Decrementa n em 1
printf("%d\n", n); // Exibe 5
Essas operações não só modificam o operando mas também possuem o valor dele.
Isso significa que o valor de ++n é n + 1 e o valor de --n é n - 1.
int n = 5;
printf("%d\n", ++n); // Exibe 6
printf("%d\n", --n); // Exibe 5
Operadores de Sufixo ++ e --
Ao contrário dos operadores de prefixo, esses operadores ficam à direita do
operando. O comportamento é similar: ++ incrementa e -- decrementa, porém a
alteração no valor não ocorre imediatamente. A alteração ocorre durante o
próximo ponto de sequência. Pontos de sequência existem em vários lugares
diferentes no C, mas considerar todo ; um ponto de sequência é uma heurística
razoável.
int n = 5;
printf("%d\n", n++); // Exibe 5
printf("%d\n", n); // Exibe 6 (pois o ponto de sequência já passou)
int o = n++;
printf("%d\n", o); // Exibe 6
printf("%d\n", n); // Exibe 7
Referências
- ISO/IEC JTC1/SC22/WG14 N2310:
- 5.1.2.3 Program execution
- 6.5 Expressions:
- 6.5.2.4 Postfix increment and decrement operators
 - 6.5.3.1 Prefix increment and decrement operators