14Fermer16
PolluxLe 07/08/2007 à 02:51
Uther (./10) :
En JAVA tout n'est pas évalué de gauche a droite, ca dépend des opérateurs mais le sens est en effet garanti par les specs.
Les affectation notamment fonctionnent de droite à gauche ce qui fait que l'on peut faire le classique x=y=z=10;

Euh non là pas du tout, tu confonds associativité et ordre d'évaluation : l'associativité, c'est ce qui fait que x-y-z est compris comme (x-y)-z et pas x-(y-z) ; alors que l'ordre d'évaluation, c'est ce qui fait que x+(x++) équivaut à 2*(x++) et pas à 2*(x++)+1 (en Java en tout cas, en C c'est du code invalide)

Cela dit c'est vrai que l'ordre d'évaluation est bien défini en Java, mais ça ne dépend pas de l'opérateur et c'est toujours de gauche à droite : http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#4779