La priorité des opérateurs
3 participants
Page 1 sur 1
La priorité des opérateurs
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 :
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.
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
- Messages : 10
Date d'inscription : 27/05/2008
Re: La priorité des opérateurs
Salut,
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
C'est pareille ici, l'expression '2 & 0' vaut 0.
Donc, ton résultat est tout à fait normal. :)
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 !
Sinon, pour les warnings, c'est normal, le compilateur avertit le programmeur dans des cas où le programmeur pourrait faire une gaffe !
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.
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 !
Sinon, pour les warnings, c'est normal, le compilateur avertit le programmeur dans des cas où le programmeur pourrait faire une gaffe !
QG- Bavard
- Messages : 11
Date d'inscription : 19/10/2010
Re: La priorité des opérateurs
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 :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 &.
http://www.bien-programmer.fr/notes.php#norme
Re: La priorité des opérateurs
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
- Messages : 10
Date d'inscription : 27/05/2008
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|