Ajude nosso projeto a se manter online.

Operadores de Atribuição, de incremento e decremento

Antes de entrarmos de cabeça nos estudos dos laços e loopings em C++, precisamos conhecer e aprender a usar alguns operadores que são importantes no estudo das estruturas de repetição.

Esses operadores vão nos permitir 'economizar' código, ou seja, escrever menos.
Obviamente, nós programadores não somos preguiçosos. Apenas somos eficientes, ok?

Operadores de Atribuição

Já usamos algumas vezes expressões do tipo:
x = x + 1;

Isso quer dizer: "faça com que a variável x tenha o seu antigo valor somado de 1".

Porém, isso pode ser abreviado para:
x += 1;
Significa a mesma coisa.

Se quisermos subtrair y de x, podemos fazer:
x = x - y;

Ou de maneira mais simplificada:
x -= y;

Para fazer x receber o valor do produto de x por y:
x = x * y;

Ou de uma maneira mais preguiçosa:
x *= y;

O mesmo vale para divisão e resto da divisão (módulo):
x /= y; é o mesmo que x = x / y;
x %= y; é o mesmo que x = x % y;

Bem simples, não? Apenas uma maneira de escrever menos.

Operadores de Incremento e Decremento

Acha que fazer:
x += 1;
x -= 2;
É escrever pouco?

Existem duas maneiras de fazer isso, para cada expressão:
x++ ou ++x
x-- ou --x

Se usarmos essas expressões de maneira 'solta':
x++; e ++x;
x--; e --x;

Elas vão ter o mesmo efeito: incrementar no primeiro caso e decrementar no segundo caso, de uma unidade.

As varições: ++x e x++ são chamadas de pré-incremento e pós-incremento
As variações: --x e x-- são chamadas de pré-decremento e pós-decremento

Elas funcionam da seguinte maneira...suponha a expressão:
y = x++;

Acontece duas coisas, nessa ordem:

  1. y recebe o valor de x
  2. x é incrementado em uma unidade


Já na expressão:
y = ++x;
Ocorre o seguinte:

  1. o valor de x é incrementado em uma unidade
  2. y recebe o novo valor de x, incrementado

Veja o seguinte programa. Ele imprime o que na tela?
#include <iostream>
using namespace std;

int main()
{
    int x=1;

    cout << x++;
    return 0;
}
A resposta é 1. Primeiro imprime x, só depois incrementa o x.
Coloque outro cout para você ver o novo valor de x depois.

Já o programa a seguir, qual saída terá?
#include <iostream>
using namespace std;

int main()
{
    int x=1;

    cout << ++x;
    return 0;
}
Agora sim, imprime diretamente 2.
Primeiro ocorre o incremente (++), e só depois é impresso o valor de x.

Agora vejamos outra sequência de operações:
x = 2;
y = 3;
z = x * ++y;

Quais os valores de x, y e z após esses três procedimentos?
Vamos lá.

Primeiro, o y é incrementado, e passa a valer 4.
Então, temos z = x * y = 2 * 4 = 8
Os novos valores são 2, 4 e 8.

Agora vejamos essa sequência de operações:
x = 2;
y = 3;
z = x * y--;

O valor de z é: z = x * y = 2 * 3 = 6
Como o sinal de decremento veio depois da variável y, só depois ela é decrementada a passa a valer 2. Os novos valores são 2, 2 e 6.

Nenhum comentário:

Postar um comentário