Dans votre exemple simple de i++
contre (i)++
il n'y a pas de différence, comme indiqué dans la réponse d'Eric Postpischil.
Cependant, cette différence est en fait significative si vous déréférencez une variable pointeur avec la fonction *
et l'utilisation de l'opérateur d'incrémentation ; il y a une différence entre *p++
et (*p)++
.
La première instruction déréférence le pointeur puis incrémente le pointeur lui-même ; la seconde instruction déréférence le pointeur puis incrémente la valeur déréférencée.
18 votes
L'utilisation apparemment arbitraire des parenthèses est courante dans les définitions de macros. Lorsqu'elles faire faire une grande différence, vous aimeriez le message d'erreur que vous obtenez. Enfin, en général.
3 votes
Il n'y a pas de différence pour les ints. Cependant, ce n'est pas toujours le cas et vous devez être prudent lorsque vous combinez des parenthèses et des opérateurs, @govin-parmar a montré un bon exemple de ce qui peut arriver avec les pointeurs.
1 votes
Pour être clair, les deux de ces cas sont bien définis (c'est-à-dire qu'ils ne sont pas UB) et stockeront 3 dans
j
.1 votes
" Est-ce que je réfléchis trop ? " oui.