Salut
Je voudrais savoir quelle est la fonction prioritaire dans le calcul : mod ou * ?
10 mod 4*3 égal à 6 ou 10
En Pascal il donne 6.
Mais en utilisant * comme prioritaire, le résultat est 10.
Quel est le bon résultat ?
Merci
Salut
Je voudrais savoir quelle est la fonction prioritaire dans le calcul : mod ou * ?
10 mod 4*3 égal à 6 ou 10
En Pascal il donne 6.
Mais en utilisant * comme prioritaire, le résultat est 10.
Quel est le bon résultat ?
Merci
Bonjour,
La multiplication et le modulus sont des opérateurs de même priorité.
L'apposition de parenthèses peut forcer la priorité de l'un sur l'autre. En l'absence de parenthèses, le compilateur effectuera les opérations de la gauche vers la droite.
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
Boe,
Et un petit test t'aurait peut-être donné la réponse ?
Si les cons volaient, il ferait nuit à midi.
Delphi 2009 nous donne, avec les optimisation :
priorité LTR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Result := 10 mod 4 * 3; mov eax,$00000006 -> 10 mod 4 = 2 * 3 = 6 // mod en premier
priorité au modulo
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Result := (10 mod 4) * 3; mov eax,$00000006 -> 10 mod 4 = 2 * 3 = 6 // mod en premier
priorité à la multiplication
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Result := 10 mod (4 * 3); mov eax,$0000000a -> 10 mod 12 = 10 // * en premier
priorité LTR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Result := 3 * 10 mod 4; mov eax,$00000002 -> 3 * 10 = 30 mod 4 = 2 // * en premier
donc si la formule donnée est :
10 % 4 * 3
alors le bon resultat est :
(10 % 4) * 3 = 6
[ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
Ma messagerie n'est pas la succursale du forum... merci!
La priorité des opérations n'étant pas un dogme, elle varie suivant le langage utilisé.
Donc, pour ne pas me poser de questions métaphysiques inutiles, je place toujours des parenthèses là où il faut pour fixer la priorité telle que je la souhaite.
Et le code n'en reste pas moins lisible !
« Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
Attribué indistinctement à :
Thomas Jefferson
Benjamin Franklin
Albert Einstein !
C'est aussi mon avis mais je voulais laisser une issue de secours aux autres.
« Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
Attribué indistinctement à :
Thomas Jefferson
Benjamin Franklin
Albert Einstein !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager