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.
Excelente curso!!!!
Só uma pergunta este curso é do básico ao avançado??
Excelente didática professor!
Opa. Obrigado 🙂