Bonsoir tout le monde,
J'aimerais bien savoir pourquoi en JAVA ce code ne donne pas le résultat souhaité
Qu'est ce qu'il se passe à la RAM exactement pour que ça n'applique pas l'incrémentation convenablement.Code:
1
2n=n++ /*ou*/n=++n
Version imprimable
Bonsoir tout le monde,
J'aimerais bien savoir pourquoi en JAVA ce code ne donne pas le résultat souhaité
Qu'est ce qu'il se passe à la RAM exactement pour que ça n'applique pas l'incrémentation convenablement.Code:
1
2n=n++ /*ou*/n=++n
Quel est le résultat souhaité?
n++ incrémente la valeur de n, puis est évalué à la valeur originale de n.
++n incrémente la valeur de n, puis est évalué à la valeur incrémentée
Hello,
quand on souhaite un résultat précis on ne fait pas des choses comme ça.
Ça c'est bon pour décrire des questions piège pour coincer les utilisateurs qui se pensent avancés et qui croient pouvoir tout interpréter, mais qui vont avoir du mal avec ces codes-là.
Ça n'a aucun autre intérêt. Quand on souhaite quelque chose, on peut l'écrire de manière claire et simple. Pas comme ça.
Pour information, en supposant que n soit un int,
est équivalent à :Code:n=n++;
etCode:
1
2int a = n++; n=a;
est équivalent àCode:int a = n++;
Donc,Code:
1
2
3 int b = n; n = n + 1; int a = b;
- d'abord on retient quelle est la valeur actuelle de n, on la range quelque part qu'on va appeler b.
- ensuite en incrémente n
- ensuite on assigne à n la valeur qu'on avait stockée en b, ce qui fait que l'incrémentation était inutile finalement.