1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

C prioridades

Discussão em 'Programação' iniciada por yb_psyco, 30 de Setembro de 2008. (Respostas: 8; Visualizações: 534)

  1. yb_psyco

    yb_psyco Power Member

    Tenho uma dúvida neste if

    Código:
            int x = 0;
            if ( ! x ++)
            {
                  // qualquer coisa
            }
    
    O que acontece neste caso?
    O conteúdo do if é executado?
     
    Última edição pelo moderador: 30 de Setembro de 2008
  2. Peter V5

    Peter V5 Folding Member

    Segundo um teste que eu fiz sim, mas não sei explicar porquê. Aqui está o programa que usei para o teste:

    main()
    {
    int x = 0;
    if(!x++)
    printf("ya.\n");
    else
    printf("Não.\n");
    getchar();
    }
     
  3. ensiferum

    ensiferum Power Member

    podes experimentar com ! ++x ou ! x++ e percebes logo a diferença
     
  4. pedroeeic

    pedroeeic Power Member


    Bem, se estou a pensar bem, o programa executa o conteudo do if sempre, pois x++ não é nenhuma condiçao, se retirares a negação o programa executa o conteudo do if na mesma....
    Isto sou eu a supor:D
     
  5. yb_psyco

    yb_psyco Power Member

    Obrigado xD

    De facto não percebo também o porquê.
    Visto que o operador ++ é mais prioritário que o !

    Edit: Obg ensiferum Já andava esquecido dos incrementos da esquerda e da direita da variável
     
    Última edição: 30 de Setembro de 2008
  6. Peter V5

    Peter V5 Folding Member

    Acho que, traduzindo por miudos é:

    se o x não for incrementado entra no if

    !x++ - neste caso entrou porque só depois do x é que ele incrementa a variável.

    !++x - neste caso não entrou porque antes do x aparecer é que ele é incrementa

    é confuso mas acho que é a resposta.
     
  7. Baderous

    Baderous Banido

    Quando a condição é testada o x ainda tem o valor 0, isto é, o teste que é realizado é equivalente a:
    Código:
    int x = 0;
    if (!x)
    Só depois desta condição ser testada é que o x é incrementado (x++).
     
  8. Peter V5

    Peter V5 Folding Member

    E tudo isto por o ++ estar antes ou depois, ainda me lembro da minha professora de prog nos dizer isto, e causa muita confusão.
     
  9. Baderous

    Baderous Banido

    Por causa de estar depois. Se estivesse antes, a primeira operação que ocorria era o incremento, ficando x com o valor 1, sendo depois feito o teste if (!x).
     

Partilhar esta Página