aula 28

Operador de decremento —

Na aula anterior aprendemos como funciona o operador de incremento ++. De forma análoga existe também o operador de decremento –. Está lembrado de nossa variável contador com o valor 7? Podemos subtrair 1 do valor dessa variável simplesmente fazendo:

int contador = 7;
contador--;

O que o computador faz ao executar esta instrução é exatamente obter o valor atual da variável contador, que neste exemplo é 7, subtrair 1 do valor atual, indo então para 6, 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 (subtrair 1 do 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 6?

int contador = 7;
printf("Valor de contador: %d\n", contador--);

E se alterarmos para a forma a seguir, será impresso 7 ou 6?

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 6.

O que vale aqui é uma regrinha bem simples. Se o operador de decremento está a direita da variável, primeiro o valor da variável é utilizado para depois se decrementado, por isso na primeira forma é impresso 7 e não 6.

Contudo, se o operador de decremento ocorre à esquerda, então o decremento é realizado primeiro, por isso o resultado impresso será 6 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á decrementada. Na instrução seguinte o incremento está à esquerda, logo, o decremento será realizado primeiro, fazendo com que a variável resultado receba o valor já atualizado pela operação de decremento.


Este post tem 3 comentários

  1. Gustavo Ramos

    Excelente curso!!!!
    Só uma pergunta este curso é do básico ao avançado??

  2. gnascer

    Excelente didática professor!

    1. Wagner Gaspar

      Opa. Obrigado 🙂

Deixe um comentário

4 × um =

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.