Ir para conteúdo
Fórum Script Brasil
  • 0

Dívida no operador --x


Jardelt

Pergunta

Boa noite! Minha dúvida é em relação a o seguinte programa:

int main()
{
    int x=10,;
    x=x--;

printf ("%d", x);
}

Na linha x=x--, sei que primeiramente o x vai receber o valor dele mesmo e depois dessa operação o valor de x terá seu valor reduzido em uma unidade devido ao -- (ao menos pensava), essa ordem das operações é devido ao -- vir posteriormente ao x, mas quando fui testar em alguns compiladores ele simplesmente desconsidera o valor de -- e essa linha fica igual a x= x. Alguém sabe porque o compilador faz isso?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá, tudo certo!?

Então ...

 

Os compiladores que entende x=  x e não x= x - 1, estão todos mais certos. O caso de pós-incremento o valor só é decrementado da variável após sua leitura atual. Assim sendo, após x= x--, x será igual a (x - 1).

Editado por britivaldo
Link para o comentário
Compartilhar em outros sites

  • 0

Mas é exatamente nesse ponto que você falou que não entendi.

Na linha x=x--, realmente o valor recebido por X, será  o valor dele. Você falou que após x=x--, ele será igual a x-1, mas quando você pede para imprimir o valor de x ele NÃO será x-1 e sim X. Porque isso corre??? O incremento -- é desconsiderado, isso que não entendi o porquê de ocorrer.

int main()   //início do programa
{
    int x=10;  //x é um inteiro inicializado com valor 10.
    x=x--; / x recebe o valor de 10 devido ao pós-incremento

//ao finalizar a linha anterior x deveria receber o seu valor negativado de 1 e isso não ocorre porque?

printf ("%d", x);
}

E agradeço o auxílio desde já.

Link para o comentário
Compartilhar em outros sites

  • 0

Exatamente, ainda está correto.

Em 27/11/2018 em 14:59, Jardelt disse:

//ao finalizar a linha anterior x deveria receber o seu valor negativado de 1 e isso não ocorre porque?

Claro que ocorreu, ante de x receber o valor 10 ele é 9. O valor foi modificando quando a variável foi lida pela segunda vez a esquerda. Ou seja, a primeiro vez é a direita e a segunda vez é na esquerda

x= x--; é a mesma coisa que
x= x - 1, x= 10;

 

Editado por britivaldo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...