Problème de compréhension d'une boucle while

Fermé
Essoum Messages postés 3 Date d'inscription vendredi 1 mai 2015 Statut Membre Dernière intervention 4 mai 2015 - 4 mai 2015 à 01:23
 Utilisateur anonyme - 4 mai 2015 à 17:34
Bonjour, ma question va très probablement vous paraître débile mais je n'arrive vraiment pas à comprendre.
Je pensais que le moniteur allait m'afficher 0 2 4 6, mais non, il m'affiche 1 5 9. Je ne comprends pas qu'en sommant deux nombres identiques on obtienne un nombre impair... Si quelqu'un pouvait m'expliquer ça serait super cool.
Merci d'avance.

public class Test {

public static void main(String[] args) {
int a = 0;
while (a<5){
System.out.println(a++ + a++);

}
}
}

3 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
4 mai 2015 à 01:34
a++ + a++

Utiliser a l'incrémenter, puis l'additionner avec a puis l'incrémenter.

En gros,
Var1=a
a=a+1
Var2=a
a=a+1
Afficher Var1+Var2
Donc 0+1 au début, puis 2+3, puis 4+9, ...
0
Utilisateur anonyme
4 mai 2015 à 01:39
Salut, essaye de mettre 'a' en global, pour voir.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
4 mai 2015 à 12:58
Totalement inutile, le problème est le ++, pas la portée de la variable a.
0
Utilisateur anonyme > NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024
Modifié par shaynox le 4/05/2015 à 17:35
Désolé si je t'ai froissé monsieur jesaistout ...
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 mai 2015 à 01:41
Bonjour,

"en sommant deux nombres identiques"
Ce n'est pas ce que tu fais, vu que tu n'additionnes pas
a
avec
a
mais
a++
avec
a++
...

"Je pensais que le moniteur allait m'afficher 0 2 4 6"
Tu as donc compris que
a++
permettait d'augmenter
a
de 1, et c'est exactement ce qui se passe.

Si
a
vaut 0 au départ,
a++
va renvoyer 0 et passer
a
à 1, en refaisant à nouveau
a++
ça renvoie 1 (la nouvelle valeur de
a
) et ça passe
a
à 2.
Donc
a++ + a++
aura pour effet de calculer 0+1 et passer
a
de 0 à 2...

CQFD :-)
0