Bem vindo a aula 27 de nosso curso gratuito de programação com a linguagem C.
Em muitas situações será necessário adicionar 1 ao valor de alguma variável. Imagine, por exemplo, uma variável do tipo int chamada contador que possui o valor 7.
Podemos adicionar 1 ao valor dessa variável simplesmente fazendo:
int contador = 7; contador++;
O que o computadora faz é obter o valor atual da variável contador, que neste exemplo é 7, adicionar mais 1 ao valor atual, indo então para 8, e então salvar este resultado na variável contador.
Esta é uma forma muito utilizada na programação, porém não é a única maneira de se fazer isso. As instruções a seguir são sinônimas, ou seja, realizam a mesma ação (adicionar 1 ao valor de uma variável).
int contador = 7; contador++; contador += 1; contador = contador + 1;
Falando agora especificamente sobre o operador ++, há algumas propriedades interessantes que podem causar muita confusão. Tomemos como exemplo nossa variável contador com o valor 7. Se tentarmos imprimir seu valor como feito no printf a seguir, qual valor será impresso, 7 ou 8?
int contador = 7; // qual valor será impresso? 7 ou 8? printf("Valor de contador: %d\n", contador++);
E se alterarmos para a forma a seguir, será impresso 7 ou 8?
int contador = 7; printf("Valor de contador: %d\n", ++contador);
Na primeira forma apresentada será impresso 7 e na segunda forma apresentada, assumindo que o valor da variável ainda é 7, será impresso 8.
Parece confuso? Vamos entender.
O que vale aqui é uma regrinha bem simples. Se o operador de incremento está a direita da variável, primeiro o valor da variável é utilizado para depois se incrementado, por isso na primeira forma é impresso 7 e não 8.
Contudo, se o operador de incremento ocorre à esquerda, então o incremento é realizado primeiro, por isso o resultado impresso será 8 no segundo caso.
Isso parece irrelevante mas pode causar sérios problemas. Avalie as instruções a seguir:
int contador = 7, resultado; resultado = contador++; resultado = ++contador;
Assumindo que a variável contador possui o valor 7, na primeira instrução a variável resultado irá receber o valor 7 e só depois a variável contador será incrementada. Na instrução seguinte o incremento está à esquerda, logo o incremento será realizado primeiro, fazendo com que a variável resultado receba o valor já atualizado pela operação de incremento.