java l'expression i++
Page 1 sur 1 • Partager •
java l'expression i++
bonjour à tous
j'ai une petit souci avec l'expression i ++
j'ai essayé des example de cours (page 253 )
il afiiche
1) i vaut : 5
2) a vaut : 5
3) i vaut : 6
et si j'ai bien compris " i++ : i est incrémenté après avoir été utilisé "
c-à-d l'expression été fait après l'instruction ?
ex : l'expression i ++ (l'incrémentation de i ) était fait après l'instruction a = i++; ?
il affiche
a vaut : 12
i vaut : 7
12 = 6(i++) +(++i) 6 ? correcte ..?
et je ne sais pas pourqoui 7 ( car il a était incrementé 2 fois ..?)
merci d'avance
j'ai une petit souci avec l'expression i ++
j'ai essayé des example de cours (page 253 )
- Code:
int i = 5;
int a ;
i = i++;
System.out.println("i vaut : "+i);
a = i++;
System.out.println("a vaut : "+a);
System.out.println("i vaut : "+i);
il afiiche
1) i vaut : 5
2) a vaut : 5
3) i vaut : 6
et si j'ai bien compris " i++ : i est incrémenté après avoir été utilisé "
c-à-d l'expression été fait après l'instruction ?
ex : l'expression i ++ (l'incrémentation de i ) était fait après l'instruction a = i++; ?
- Code:
int i = 5;
int a;
a = i++ + ++i;
System.out.println("a vaut : "+a);
System.out.println("i vaut : "+i);
}
il affiche
a vaut : 12
i vaut : 7
12 = 6(i++) +(++i) 6 ? correcte ..?
et je ne sais pas pourqoui 7 ( car il a était incrementé 2 fois ..?)
merci d'avance

didi- Nombre de messages: 205
Prénom: Dinesh
Statut:
Date d'inscription: 21/01/2009
Re: java l'expression i++
"i++" est une expression, elle a donc une valeur.
Mais "i++" a aussi un effet : incrémenter "i"
Quelle est la valeur de "i++" ? La valeur AVANT incrémentation. D'abord on prend la valeur de "i" puis on "++"
Quelle est la valeur de "++i" ? La valeur APRES incrémentation. D'abord on "++" puis on prend la (nouvelle) valeur de i.
Il faut être très méthodique et rigoureux.
Détaillons "a = i++ + ++i;" si i=5
1. On est face à une assignation. Il faut donc évaluer l'expression à droite puis la donner à "i". Pour cela,
2. L'expression à évaluer est une somme. Il faut donc évaluer les 2 opérandes "i++" et "++i".
Dans quel ordre ? Java évalue toujours l'opérande de gauche PUIS celle de droite. Donc,
3. Il faut donc évaluer "i++". Cette expression a une valeur "5" et on incrémente "i" (qui vaut 6) mais l'évaluation est faite avant, "i++" vaut donc 5
4. On évalue à présent "++i". D'abord on incrémente et "i" passe à 7. On évalue alors "i" donc "++i" vaut 7.
5. Les 2 opérandes étant évalués, on peut faire la somme du point 2 : 5+7=12
6. l'expression à droite de l'assignation vaut donc 12, et on peut terminer le point 1 . a reçoit 12.
7. On a donc bien a=12 et i=7
Dis autrement.
a = i++ + ++i
devient a = ( (i++) + (++i) ) (pour montrer comment les priorités induisent les parenthèses)
devient a = ( (5) + (++i) ) (i passe à 6)
devient a = ( (5) + (7) ) (i passe à 7)
devient a = 12
Mais "i++" a aussi un effet : incrémenter "i"
Quelle est la valeur de "i++" ? La valeur AVANT incrémentation. D'abord on prend la valeur de "i" puis on "++"
Quelle est la valeur de "++i" ? La valeur APRES incrémentation. D'abord on "++" puis on prend la (nouvelle) valeur de i.
Il faut être très méthodique et rigoureux.
Détaillons "a = i++ + ++i;" si i=5
1. On est face à une assignation. Il faut donc évaluer l'expression à droite puis la donner à "i". Pour cela,
2. L'expression à évaluer est une somme. Il faut donc évaluer les 2 opérandes "i++" et "++i".
Dans quel ordre ? Java évalue toujours l'opérande de gauche PUIS celle de droite. Donc,
3. Il faut donc évaluer "i++". Cette expression a une valeur "5" et on incrémente "i" (qui vaut 6) mais l'évaluation est faite avant, "i++" vaut donc 5
4. On évalue à présent "++i". D'abord on incrémente et "i" passe à 7. On évalue alors "i" donc "++i" vaut 7.
5. Les 2 opérandes étant évalués, on peut faire la somme du point 2 : 5+7=12
6. l'expression à droite de l'assignation vaut donc 12, et on peut terminer le point 1 . a reçoit 12.
7. On a donc bien a=12 et i=7
Dis autrement.
a = i++ + ++i
devient a = ( (i++) + (++i) ) (pour montrer comment les priorités induisent les parenthèses)
devient a = ( (5) + (++i) ) (i passe à 6)
devient a = ( (5) + (7) ) (i passe à 7)
devient a = 12
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum