Priorité des opérateurs logiques

Le
David Côme
Bonjour à tous.
J'ai la norme sous les yeux et je n'arrive pas à trouver un paragraphe sur
la priorité des opérateurs logique, en particulier sur && et ||.
J'ai bien trouvé page 63 la note 53 disant "The precedence of operators is
not directly specified, but it can be derived from the syntax."
mais ca ne m'avance pas pour savoir lequel est prioritaire sur l'autre ou
si au contraire ils ont tout les deux la même priorité (ce que j'ai
toujours pensé).

Merci beaucoup pour vos réponses.
David Côme.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Bourguet
Le #16628111
David Côme
Bonjour à tous.
J'ai la norme sous les yeux et je n'arrive pas à trouver un paragraphe sur
la priorité des opérateurs logique, en particulier sur && et ||.
J'ai bien trouvé page 63 la note 53 disant "The precedence of operators is
not directly specified, but it can be derived from the syntax."
mais ca ne m'avance pas pour savoir lequel est prioritaire sur l'autre ou
si au contraire ils ont tout les deux la même priorité (ce que j'ai
toujours pensé).



logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression

logical-OR-expression:
logical-AND-expression
logical-OR-expression || logical-AND-expression

Donc || a priorite sur && puisque la grammaire dit que les arguments de ||
c'est des logical-AND-expression.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
David Côme
Le #16628101
On Tue, 26 Aug 2008 11:29:16 +0200, Jean-Marc Bourguet wrote:

David Côme
Bonjour à tous.
J'ai la norme sous les yeux et je n'arrive pas à trouver un paragraphe
sur
la priorité des opérateurs logique, en particulier sur && et ||.
J'ai bien trouvé page 63 la note 53 disant "The precedence of operators
is
not directly specified, but it can be derived from the syntax."
mais ca ne m'avance pas pour savoir lequel est prioritaire sur l'autre
ou
si au contraire ils ont tout les deux la même priorité (ce que j'ai
toujours pensé).



logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression

logical-OR-expression:
logical-AND-expression
logical-OR-expression || logical-AND-expression

Donc || a priorite sur && puisque la grammaire dit que les arguments de
||
c'est des logical-AND-expression.




Ok, merci beaucoup.
espie
Le #16628091
In article Jean-Marc Bourguet
logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression

logical-OR-expression:
logical-AND-expression
logical-OR-expression || logical-AND-expression

Donc || a priorite sur && puisque la grammaire dit que les arguments de ||
c'est des logical-AND-expression.



Generalement, on dit le contraire a partir de ce bout de grammaire.
Je ne sais pas si tu t'es trompe, ou si tu t'exprimes a l'envers, je
presume le 2e.


Enfin bon, pour etre sur.

Si on a

a && b || c && d

ca marche comme si c'etait parenthese
(a && b) || (c && d)
espie
Le #16628081
In article Marc Espie
Si on a

a && b || c && d

ca marche comme si c'etait parenthese
(a && b) || (c && d)



Une facon mnemotechnique de s'en souvenir (qui marche pour moi),
c'est de voir le && comme une sorte de produit logique
(ca ne marche que si les 2 conditions sont remplies) et le ou comme
une sorte d'addition logique (l'un ou l'autre, ca marche deux fois
plus souvent).

Si on a un langage qui met les deux operations sur des niveaux de
priorites differents, il les classe donc en fonction.

... meme si, oui, en fait, les regles d'algebre de boole sont parfaitement
symetriques, et que la negation est un isomorphisme de (bool, &&, ||) sur
(bool, ||, &&).
Jean-Marc Bourguet
Le #16628071
(Marc Espie) writes:

In article Jean-Marc Bourguet >logical-AND-expression:
> inclusive-OR-expression
> logical-AND-expression && inclusive-OR-expression
>
>logical-OR-expression:
> logical-AND-expression
> logical-OR-expression || logical-AND-expression
>
>Donc || a priorite sur && puisque la grammaire dit que les arguments de ||
>c'est des logical-AND-expression.

Generalement, on dit le contraire a partir de ce bout de grammaire.
Je ne sais pas si tu t'es trompe, ou si tu t'exprimes a l'envers, je
presume le 2e.



Un peu des deux, je me suis exprime a l'envers (je savais que les &&
s'effectuent avant), mais involontairement (je sais ce qu'etre plus
prioritaire veut dire).

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Jean-Marc Bourguet
Le #16628061
(Marc Espie) writes:

In article Marc Espie >Si on a
>
>a && b || c && d
>
>ca marche comme si c'etait parenthese
>(a && b) || (c && d)

Une facon mnemotechnique de s'en souvenir (qui marche pour moi),
c'est de voir le && comme une sorte de produit logique
(ca ne marche que si les 2 conditions sont remplies) et le ou comme
une sorte d'addition logique (l'un ou l'autre, ca marche deux fois
plus souvent).



C'est comme ca que je retiens aussi (0 = false, 0 != true et on a la table
correcte).

Si on a un langage qui met les deux operations sur des niveaux de
priorites differents, il les classe donc en fonction.

... meme si, oui, en fait, les regles d'algebre de boole sont parfaitement
symetriques, et que la negation est un isomorphisme de (bool, &&, ||) sur
(bool, ||, &&).



Ada a les operateurs correspondant de meme priorite mais non associatif
entre eux, donc si tu veux les combiner, tu dois mettre des parentheses.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
espie
Le #16628891
In article Jean-Marc Bourguet
Ada a les operateurs correspondant de meme priorite mais non associatif
entre eux, donc si tu veux les combiner, tu dois mettre des parentheses.



Le bourne-shell oublie de mettre des priorites, et les parentheses ont
une semantique tres speciale, ce qui fait que c'est pas super-simple
d'emploi et pas mega-lisible.

(mais bon, c'est moins grave que pascal et l'absence de court-circuit
qui empeche d'utiliser les operateurs logiques pour faire des gardes)
Wykaaa
Le #16642411
David Côme a écrit :
Bonjour à tous.
J'ai la norme sous les yeux et je n'arrive pas à trouver un paragraphe
sur la priorité des opérateurs logique, en particulier sur && et ||.
J'ai bien trouvé page 63 la note 53 disant "The precedence of operators
is not directly specified, but it can be derived from the syntax."
mais ca ne m'avance pas pour savoir lequel est prioritaire sur l'autre
ou si au contraire ils ont tout les deux la même priorité (ce que j'ai
toujours pensé).

Merci beaucoup pour vos réponses.
David Côme.



Quand on veut faire des programmes de qualité, fiables, lisibles,etc.,
pour toutes ces "choses" on met les parenthèses qui vont bien sans se
prendre la tête avec la norme qui est tout sauf pédagogique (elle n'est
pas faite pour cela).
David Côme
Le #16642551
On Wed, 27 Aug 2008 18:49:00 +0200, Wykaaa
Quand on veut faire des programmes de qualité, fiables, lisibles,etc.,
pour toutes ces "choses" on met les parenthèses qui vont bien sans se
prendre la tête avec la norme qui est tout sauf pédagogique (elle n'est
pas faite pour cela).




Ce n'est pas pour mes programmes, mais pour avoir des arguments dans un
débat. Car ma version g++ (4.3.1) émet un warning comme quoi il manque des
(), ce que je trouve normal mais ce qui choque mon interlocuteur.
Wykaaa
Le #16661111
David Côme a écrit :
On Wed, 27 Aug 2008 18:49:00 +0200, Wykaaa
Quand on veut faire des programmes de qualité, fiables, lisibles,etc.,
pour toutes ces "choses" on met les parenthèses qui vont bien sans se
prendre la tête avec la norme qui est tout sauf pédagogique (elle
n'est pas faite pour cela).




Ce n'est pas pour mes programmes, mais pour avoir des arguments dans un
débat. Car ma version g++ (4.3.1) émet un warning comme quoi il manque
des (), ce que je trouve normal mais ce qui choque mon interlocuteur.



OK, mais finalement g++ apporte de l'eau à mon moulin :-)
Publicité
Poster une réponse
Anonyme