Une construction comme x = x++;
indique que vous êtes probablement à l'incompréhension de ce que l' ++
opérateur:
// original code
int x = 7;
x = x++;
Réécrivons cette de faire la même chose, basée sur la suppression de l' ++
opérateur:
// behaves the same as the original code
int x = 7;
int tmp = x; // value of tmp here is 7
x = x + 1; // x temporarily equals 8 (this is the evaluation of ++)
x = tmp; // oops! we overwrote y with 7
Maintenant, nous allons réécrire à faire (ce que je pense) que tu voulais:
// original code
int x = 7;
x++;
La subtilité ici, c'est que l' ++
de l'opérateur modifie la variable x
, contrairement à une expression telle que x + x
, ce qui devrait correspondre à une valeur int mais laisser la variable x
lui-même inchangé. Envisager une construction, comme le vénérable for
boucle:
for(int i = 0; i < 10; i++)
{
System.out.println(i);
}
Avis de l' i++
il? C'est le même opérateur. Nous pourrions réécrire cette for
boucle de ce genre et il se comporterait de la même:
for(int i = 0; i < 10; i = i + 1)
{
System.out.println(i);
}
Je recommande également contre l'utilisation de l' ++
de l'opérateur dans les grandes expressions dans la plupart des cas. En raison de la subtilité de quand il modifie la variable d'origine dans le pré - rapport à la post-incrémentation (++x
et x++
, respectivement), il est très facile d'introduire des bogues subtils qui sont difficiles à repérer.