La priorité des opérateurs

Voir le sujet précédent Voir le sujet suivant Aller en bas

La priorité des opérateurs

Message  Davidlouiz le Ven 29 Oct 2010 - 3:57

Bonjour,

J'ai une question à propos de la priorité des opérateurs.

J'ai lu sur Internet à plusieurs reprise que l'opérateur == était prioritaire sur l'opérateur &.
Ne trouvant pas ça très commode, j'ai eu un doute. J'ai donc compilé avec MinGW et exécuté la ligne de code suivante :

Code:
printf("%d\n", 2 & 4 == 3);

Je m'aperçois que le résultat est 0, ce qui me laisse penser que le & est prioritaire sur le ==.

En effet :
2 & 4 donne 6
6 == 3 donne 0

Si l'opérateur == était réellement prioritaire sur le &, j'aurais obtenu :
4 == 3 donne 0
2 & 0 donne 2

J'aimerais donc savoir si MinGW ne s'est pas permis de modifier la priorité des opérateurs.

En savez-vous un peu plus sur la question ? Quel est le résultat obtenu sur les autres compilateurs ?

Pour votre information, MinGW affiche quand même un Warning indiquant qu'il serait préférable de mettre des parenthèses.

Merci.

Davidlouiz
Bavard
Bavard

Messages : 10
Date d'inscription : 27/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: La priorité des opérateurs

Message  QG le Lun 1 Nov 2010 - 21:27

Salut,

Davidlouiz a écrit:
En effet :
2 & 4 donne 6
6 == 3 donne 0

L'expression '2 & 4' vaut 0 et non 6.

Je pense que tu devrais vérifier tout ça, parce que tu n'as pas l'air d'avoir compris comment marche les opérateurs au niveau du bit. (:

Sinon, soit en certain, l'opérateur '==' est prioritaire sur l'opérateur '&' (ET logique bit à bit).

Un tableau complet ici :

http://fr.wikibooks.org/wiki/Programmation_C/Op%C3%A9rateurs

Davidlouiz a écrit:
Si l'opérateur == était réellement prioritaire sur le &, j'aurais obtenu :
4 == 3 donne 0
2 & 0 donne 2

C'est pareille ici, l'expression '2 & 0' vaut 0. Laughing

Donc, ton résultat est tout à fait normal. :)

Davidlouiz a écrit:
J'aimerais donc savoir si MinGW ne s'est pas permis de modifier la priorité des opérateurs.

Franchement, je pense pas... Je pense même qu'il ne puisse pas le faire en fait...
MinGW étant l'implémentation de GCC pour l'environnement Windows, je crois pas que l'on puisse configurer gcc pour paramétrer la priorité des opérateurs. Et c'est un peu normal, je vois mal comment tu peux écrire un code source portable si la priorité des opérateurs change à tous les compilateur... Enfin, tu pourrais utiliser des parenthèses dans tous les sens ! lol!

Sinon, pour les warnings, c'est normal, le compilateur avertit le programmeur dans des cas où le programmeur pourrait faire une gaffe !

QG
Bavard
Bavard

Messages : 11
Date d'inscription : 19/10/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: La priorité des opérateurs

Message  -ed- le Mar 2 Nov 2010 - 10:37

Davidlouiz a écrit:Bonjour,

J'ai une question à propos de la priorité des opérateurs.

J'ai lu sur Internet à plusieurs reprise que l'opérateur == était prioritaire sur l'opérateur &.
L'important est de lire au bon endroit, c'est à dire dans les documents de référence. Je ne connais pas la réponse par cœur, par contre, je sais où la trouver de manière fiable :

http://www.bien-programmer.fr/notes.php#norme

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: La priorité des opérateurs

Message  Davidlouiz le Mar 9 Nov 2010 - 4:00

L'expression '2 & 4' vaut 0 et non 6.

Merci QG. En effet je me suis craqué sur toute la ligne. Du coup j'ai honte d'avoir ouvert ce sujet.

L'opérateur '==' est bien prioritaire sur le '&'.

Davidlouiz
Bavard
Bavard

Messages : 10
Date d'inscription : 27/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: La priorité des opérateurs

Message  Contenu sponsorisé Aujourd'hui à 21:20


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum