Bien programmer en langage C
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-15%
Le deal à ne pas rater :
(Adhérents) LEGO® Icons 10318 Le Concorde
169.99 € 199.99 €
Voir le deal

La priorité des opérateurs

3 participants

Aller en bas

La priorité des opérateurs Empty La priorité des opérateurs

Message  Davidlouiz 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

Revenir en haut Aller en bas

La priorité des opérateurs Empty Re: La priorité des opérateurs

Message  QG 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

Revenir en haut Aller en bas

La priorité des opérateurs Empty Re: La priorité des opérateurs

Message  -ed- 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
-ed-
-ed-
Admin
Admin

Messages : 290
Date d'inscription : 26/05/2008
Age : 67
Localisation : Paris 14eme arrondissement (75, France)

http://bien-programmer.fr

Revenir en haut Aller en bas

La priorité des opérateurs Empty Re: La priorité des opérateurs

Message  Davidlouiz 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

Revenir en haut Aller en bas

La priorité des opérateurs Empty Re: La priorité des opérateurs

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser