aze (./330) :
sinon non, le ++ est exécuté avant le calcul de l'expression, c'est juste que GC a présenté le déroulement déjà optimisé par le compilosans optimisation, ça donne a1 = a; a = a + 1; ret = a1 + 1; return ret; et c'est ce comportement qui doit être conservé
Euh non, ce n'est pas ça la définition de la postincrémentation en C! En Java peut-être (où des trucs comme a++ + a++ sont valides), mais en C, tout ce qui se trouve entre 2 "sequence points" (ce qui est en général l'expression entière) est exécuté en une seule fois et
ensuite les postincrémentations sont effectués. Et une variable donnée ne peut être {pré,post}{in,dé}crémentée qu'une seule fois entre 2 sequence points, sinon le comportement n'est pas défini (ce qui implique que la définition style Java que tu as donnée est une implémentation valide, mais ce n'est pas la définition ni la seule implémentation possible).