Pages: [1]   Go Down
Author Topic: Prirorité des operateurs logiques  (Read 640 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3026
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: August 20, 2009, 03:03:15 am by fdufnews » Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3026
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.
Quote
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.
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, merci !
Logged

Pages: [1]   Go Up
Jump to: