aula 27

Operador de incremento ++

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.


Deixe um comentário

20 − dezoito =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.