Juste une petite confirmation : si i est un entier et t est par exemple
un tableau d'entiers ou de flottants, une instruction du style
t[i++]++;
n'est pas indéterminée, n'est-ce pas ? Par exemple si i vaut
initialement 42, l'instruction ci-dessus incrémente d'une unité la
valeur de t[42] tout en passant à la case suivante du tableau t ie la
case 43. Je pose aussi la question car j'ai rarement lu ce genre
d'instruction dans du "vrai" code, peut-être n'est-ce pas considéré
comme très lisible, voire considéré comme source de trouble ou alors,
peut-être n'ai-je pas une fréquentation assez assidue du code "réel" ;)
Oui, d'ailleurs c'est ce que la Norme dit en toutes lettres. Par contre, et comme tu le soulignes, le cas de i++ n'est pas symétrique.
lui même équivalent à (i=i+1).
Plus ou moins :
A compound assignment of the form E1 op = E2 differs from the simple assignment expression E1 = E1 op (E2) only in that the lvalue E1 is evaluated only once.
Samuel Devulder a écrit :
Seul ++i est
équivalent à i+=1,
Oui, d'ailleurs c'est ce que la Norme dit en toutes lettres. Par contre,
et comme tu le soulignes, le cas de i++ n'est pas symétrique.
lui même équivalent à (i=i+1).
Plus ou moins :
A compound assignment of the form E1 op = E2 differs from the simple
assignment expression E1 = E1 op (E2) only in that the lvalue E1 is
evaluated only once.
Oui, d'ailleurs c'est ce que la Norme dit en toutes lettres. Par contre, et comme tu le soulignes, le cas de i++ n'est pas symétrique.
lui même équivalent à (i=i+1).
Plus ou moins :
A compound assignment of the form E1 op = E2 differs from the simple assignment expression E1 = E1 op (E2) only in that the lvalue E1 is evaluated only once.