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

Essoum Messages postés 3 Statut Membre -  
 Utilisateur anonyme -
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

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    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
  2. Utilisateur anonyme
     
    Salut, essaye de mettre 'a' en global, pour voir.
    0
    1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Totalement inutile, le problème est le ++, pas la portée de la variable a.
      0
      1. Utilisateur anonyme > NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Désolé si je t'ai froissé monsieur jesaistout ...
        0
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    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