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
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
++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.
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.
++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 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.