OVH Cloud OVH Cloud

t[i++]++

31 réponses
Avatar
candide
Bonjour


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" ;)

Merci.

1 réponse

1 2 3 4
Avatar
candide
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.
1 2 3 4