pour la condition suivante : if(1==2 AND 1==2 OR 1==1)
ca équivaut à : if((1==2 AND 1==2) OR 1==1)
mais pourquoi ca n'équivaut pas a if(1==2 AND (1==2 OR 1==1)) ??
quelles sont les règles ??
merci
-----
11/06/2017, 21h10
#2
pm42
Date d'inscription
juillet 2015
Messages
14 293
Re : priorité condition if
Tu peux voir AND comme une multipllication en binaire : si l'un des 2 est faux (0), le résultat aussi.
Tu peux voir OR comme une addition en binaire : pour avoir 0, il faut que les 2 soient faux. Si l'un des 2 est vrai, on a un résultat positif.
Et la multiplication a priorité sur l'addition.
C'est le truc mnémonique que j'utilise.
11/06/2017, 21h39
#3
Chanur
Date d'inscription
septembre 2011
Messages
1 200
Re : priorité condition if
Idem.
Et j'ajouterait que dans le doute, il vaut mieux mettre des parenthèses : ça ne peut pas nuire ... (d'ailleurs gcc signale avec un warning une expression du style (a || b && c) )
Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.
11/06/2017, 22h29
#4
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 773
Re : priorité condition if
Il faut chercher tout ça dans la norme du langage.
Et j'ajouterait que dans le doute, il vaut mieux mettre des parenthèses
C'est en effet la meilleure manière de lever les doutes.
Aujourd'hui
A voir en vidéo sur Futura
12/06/2017, 06h47
#5
minushabens
Date d'inscription
juillet 2014
Messages
6 220
Re : priorité condition if
Dans un cas comme celui-là je préfère mettre des parenthèses, ça a le mérite d'expliciter la logique (si j'ose dire) de la construction. Comme je n'ai plus beaucoup de mémoire ça m'aide...