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