Soit la déclaration contient une lecture volatile, soit elle ne contient pas de lecture volatile. Il ne peut y avoir aucune ambiguïté ici, car la lecture volatile est très importante pour la sémantique du programme.
Si l'on peut faire confiance à javac, on peut conclure que l'instruction n'implique pas une lecture volatile de number
. La valeur d'une expression d'affectation x=y
est en fait juste la valeur de y
(après conversions).
Nous pouvons également déduire que
System.out.println(number=1);
n'implique pas la lecture number
String s;
(s="hello").length();
n'implique pas la lecture s
x_1=x_2=...x_n=v
n'implique pas la lecture x_n, x_n-1, ...
; au lieu de cela, la valeur de v
est directement affecté à x_i
(après les conversions nécessaires par les types de x_n, ... x_i