Opérateur de post-incrémentation en Java
Question :
Dans l'extrait de code ci-dessous, pourquoi l'opérateur de post-incrémentation j attribue-t-il 0 à j ?
public class Test { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 } }
Selon l'auteur du livre "Java Puzzlers", l'instruction j = j est similaire à la séquence suivante :
temp = j; j = j + 1; j = temp;
Cependant, l'instruction a = b attribue à b la valeur 1, ce qui contredit le comportement attendu de l'opérateur de post-incrémentation.
Réponse :
L'erreur dans l'argument consiste à appliquer la règle de l'incrément puis à attribuer à a = b mais pas à j = j . La séquence correcte d'opérations pour a = b est :
temp = b; b = b + 1; // increment a = temp; // assign
En appliquant la même règle à j = j , nous obtenons :
j = j; j = j + 1; // increment
Comme la valeur initiale de j était 0, l'opérateur post-incrément renvoie 0 car la valeur de j avant l'incrément est utilisée dans l'expression.
Par conséquent, la valeur finale de j est 0 car l'instruction d'affectation est évaluée à j = 0.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!