Hello everybody.

Ma question a trait à l'opérateur virgule, qui permet de relier des expressions en assurant leur éxécution de gauche à droite, pour rendre comme valeur le résultat de l'expression la plus à droite.

1) L'opérateur virgule est une opérateur, il rend une valeur: cela est conforme à la définition d'une expression. L'ensemble des expressions reliées par l'opérateur virgule est donc lui-même une expression.

2) K&G nous explique [K&G $A7.18 page 210] que tous les effets de bords d'une expression sont réalisés avant de passer à l'expression située à droite dans le cours des éxécutions d'expressions de l'opérateur virgule.

3) La définition de l'opérateur ++ nous dit: postfixé ==> incrémentation après avoir rendu la valeur dans l'expression, préfixé ==> incrémentation avant de rendre la valeur dans l'expression.

Donc, comment se fait-il que les deux codes:

int n=0, x=2; ++x, n=x<3;

et

int n=0, x=2; x++, n=x<3;

donnent strictement le même résultat, à savoir la valeur zéro pour n?

Normalement, dans le deuxième cas, x aurait du être incrémenté APRES l'expression, et on devrait donc avoir la valeur 1 pour n.

Et schtroumph.

Merci pour toute réponse.