134 votes

Comment fonctionnent les opérateurs post increment (i++) et pre increment (++i) en Java ?

Pouvez-vous m'expliquer la sortie de ce code Java ?

int a=5,i;

i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;

System.out.println(a);
System.out.println(i);

La sortie est de 20 dans les deux cas

258voto

Lombo Points 2764

++a incrémente puis utilise la variable.
a++ utilise puis incrémente la variable.

Si vous avez

a = 1;

et vous le faites

System.out.println(a++); //You will see 1

//Now a is 2

System.out.println(++a); //You will see 3

codaddict explique votre extrait de code particulier.

174voto

kgiannakakis Points 62727

Est-ce que cela vous aide ?

a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)

a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)

Le point principal est que ++a incrémente la valeur et la renvoie immédiatement.

a++ incrémente également la valeur (en arrière-plan) mais renvoie la valeur inchangée de la variable - ce qui semble être exécuté plus tard.

77voto

Tigran Babajanyan Points 638

Dans les deux cas, il calcule d'abord la valeur, mais dans le post-incrémentation, il conserve l'ancienne valeur et après le calcul renvoie

++a

  1. a = a + 1 ;
  2. renvoyer a ;

a++

  1. temp = a ;
  2. a = a + 1 ;
  3. température de retour ;

10voto

Aurril Points 1830

++a incréments a avant son évaluation. a++ évalue a et ensuite l'incrémente.

Lié à votre expression donnée :

i = ((++a) + (++a) + (a++)) == ((6) + (7) + (7)); // a is 8 at the end
i = ((a++) + (++a) + (++a)) == ((5) + (7) + (8)); // a is 8 at the end

Les parentes que j'ai utilisées ci-dessus sont implicitement utilisées par Java. Si vous regardez les termes de cette façon, vous pouvez facilement voir, qu'ils sont tous les deux les mêmes qu'ils sont commutatifs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X