OVH Cloud OVH Cloud

ordre de l'évaluation dans les conditions.

13 réponses
Avatar
Raphael Marinier
Bonjour,
Je voudrais savoir si la norme du C spécifie l'ordre d'interprétation des différentes conditions dans un if.
Je m'explique, si je fais : if (!empty && is_valid() ), est-ce que la fontion is_valid() va être executé, puis la variable empty examinée, ou le contraire ? D'après moi, c'est de gauche à droite, comme dans l'évaluation de toute expression, mais j'aimerais avoir la confirmation ;)

--
Raphael Marinier

3 réponses

1 2
Avatar
Frédéri MIAILLE
L'ordre d'évaluation ne dépends ici que de l'opérateur "&&" qui observe
les


expressions de gauche à droite.
Voir règles d'associativité.


Où vois-tu de l'associativité dans

a && b

?

--
Horst

Je comprends pas ta question, tu souhaitais me dire que j'avais tort ?

Si oui, merci de me dire sur quel point. Les remarques simples sans
justifications ne m'étant d'aucune utilité.
Je sors ça d'un livre et je ne pense pas qu'ils se soient trompés.
J'ai un tableau avec tous les opérateurs qui est composé de colonnes :
"Opérateur", "Signification", "Priorité", "Associativité".


--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.os.ms-windows.programmation
fr.comp.graphisme.programmation


Avatar
Vincent Lefevre
Dans l'article <bhg7ep$18c0$,
"Frédéri MIAILLE" écrit:

Je comprends pas ta question, tu souhaitais me dire que j'avais tort ?
Si oui, merci de me dire sur quel point. Les remarques simples sans
justifications ne m'étant d'aucune utilité.
Je sors ça d'un livre et je ne pense pas qu'ils se soient trompés.
J'ai un tableau avec tous les opérateurs qui est composé de colonnes :
"Opérateur", "Signification", "Priorité", "Associativité".


L'associativité n'est importante que quand tu as deux opérateurs:

a && b && c

Ce n'était pas le cas ici.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Yves ROMAN

In 'fr.comp.lang.c', Raphael Marinier wrote:

Je voudrais savoir si la norme du C spécifie l'ordre d'interprétation
des différentes conditions dans un if. Je m'explique, si je fais : if
(!empty && is_valid() ), est-ce que la fontion is_valid() va être
executé, puis la variable empty examinée, ou le contraire ? D'après moi,
c'est de gauche à droite, comme dans l'évaluation de toute expression,
mais j'aimerais avoir la confirmation ;)


C'est une FAQ non?

FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/


Oui : 10.8
Mais un exemple classique serait peut-être le bienvenu; Du genre
if ((ptr != NULL) && (*ptr != 0))


1 2