Partage
  • Partager sur Facebook
  • Partager sur Twitter

AND OR... Quelles prioritées ?

Sujet résolu
    20 février 2006 à 11:23:29

    Si je fais ça :

    if (nombre==0 AND media < 10 OR kilos > 10)


    Dans quelles conditions le if serait vrai ?

    Si (nombre = 0 et media < 10) ou (nombre = 0 et kilos > 10)

    ou alors

    Si (nombre = 0 et media < 10) ou (kilos > 10)

    ?
    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2006 à 11:31:55

      La priorité exact serait
      Si (nombre = 0 et media < 10) ou (kilos > 10)

      Car le language prend de gauche a droite quand il n'y voit aucune priorité la priorité des operateurs quand il n'y voit aucune parenthese :-°
      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2006 à 11:32:51

        Pour être sur mets toujours des parenthèses en plus c'est plus facile à relire.

        Ensuite, remplaces AND par && et OR par ||

        Enfin, pour répondre à ta question, && a la priorité sur ||

        Donc, ce que tu as écris, correspond à (nombre = 0 et media < 10) ou (kilos > 10)

        Sauf erreur de ma part, bien sûr. Je mets toujours des parenthèses. Ca ne coûte rien et ça rassure :)

        Un tableau moche mais simple:
        Image utilisateur

        a+
        • Partager sur Facebook
        • Partager sur Twitter
          20 février 2006 à 11:38:02

          Merci !!!

          Mais alors, comment mettre la priorité sur le OR ?? (si je met OR et AND, c'est pour la lecture, dans mon code c'est toujours && et ||)
          • Partager sur Facebook
          • Partager sur Twitter
            20 février 2006 à 11:40:50

            Sauf qu'aucun programmeur C ne lit OR et AND plus facilement que || et &&...
            Bah si tu veux || prio sur && suffit d'entourer le || de parens.

            a && (b || c) && d

            au lieu de

            a && b || c && d

            Perso je ne mets jamais de parenthèses non nécessaires dans ce cas-ci parce que je trouve que c'est moins lisible mais c'est une question de style.
            • Partager sur Facebook
            • Partager sur Twitter
              20 février 2006 à 11:52:45

                      if (key[SDLK_0] == 1 && (key[SDLK_RSHIFT] == 1 || key[SDLK_LSHIFT] == 1=))


              Ca ne fonctionne pas, le compilateur me donne des erreurs...

              Au pire, je contournerai le problème, mais bon...

              EDIT : DSL, en fait j'ai mit un égal en trop :euh:
              • Partager sur Facebook
              • Partager sur Twitter
                20 février 2006 à 11:54:31

                Citation : Insomniak

                        if (key[SDLK_0] == 1 && (key[SDLK_RSHIFT] == 1 || key[SDLK_LSHIFT] == 1=))




                Tu as un = de trop après ton 1

                Quand le "compilateur vous donne des erreurs" ... Donnez les nous aussi, ça aide à comprendre ;)

                a+
                • Partager sur Facebook
                • Partager sur Twitter

                AND OR... Quelles prioritées ?

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown