Prirorité des operateurs logiques

Bonjour,

Je me pose des questions sur l’ordre de prirorité des opérateurs logiques…

Si j’écris :

if(a>10 && a<20 || b==10)

est ce que ca veut dire :

j’eexecute si :

a compris entre 10 et 20
ou bien si b est égal à 10

Faut il mettre des parenthèses pour être sur ?

if((a>10 && a<20) || b==10)

?

Merci !

Voila un lien vers une table de predence des opérateurs en C
http://www.difranco.net/cop2220/op-prec.htm
Les lignes du haut ont une precedence supérieures à celles en dessous.
De toutes les façons lorsqu'il y a un doute le mieux c'est de mettre des parenthèses. Cela améliore souvent la lisibilité du code.

Ok merci, donc normalement sans parenthèses, ca doit bien donner ce que je cherche

comme mentionné, en cas de doute mets des parenthèses. plus de parenthèses ne changera en rien l'exécutable (sauf si elles sont nécessaire bien sûr...) elle ne servent qu'a guider le compilateur.

maintenant c'est une bonne idée de connaitre un peu les précèdences, ça évite d'alourdir le code pour les lecteurs humains...

Ok merci, donc normalement sans parenthèses, ca doit bien donner ce que je cherche

Exactement.
Les opérateurs relationnels ont une plus haute priorité que les opérateurs logiques. Donc les relations sont déterminées en premier.
Le && est plus prioritaire que le || donc la relation est bien interprétée comme tu le décrivais.

j'execute si :

a compris entre 10 et 20
ou bien si b est égal à 10

Ne pas oublier les bornes 10 et 20 sont exclues.

Ok, merci !