Bizzarement quand meme :
mtrapier@prod500 ~ $ cat xpp.c
#include <stdio.h>
int main()
{
int x, z;
x = 1;
printf("x=%d\n", x);
z = (x++)+(x++);
printf("x=%d z=%d after [z=(x++)+(x++)]\n", x, z);
return 0;
}
mtrapier@prod500 ~ $ gcc xpp.c -o xpp.app
mtrapier@prod500 ~ $ ./xpp.app
x=1
x=3 z=2 after [z=(x++)+(x++)]
mtrapier@prod500 ~ $ gcc xpp.c -O1 -o xpp-o1.app
mtrapier@prod500 ~ $ gcc xpp.c -O2 -o xpp-o2.app
mtrapier@prod500 ~ $ gcc xpp.c -O3 -o xpp-o3.app
mtrapier@prod500 ~ $ gcc xpp.c -Os -o xpp-os.app
mtrapier@prod500 ~ $ ./xpp-o1.app
x=1
x=3 z=2 after [z=(x++)+(x++)]
mtrapier@prod500 ~ $ ./xpp-o2.app
x=1
x=3 z=2 after [z=(x++)+(x++)]
mtrapier@prod500 ~ $ ./xpp-o3.app
x=1
x=3 z=2 after [z=(x++)+(x++)]
mtrapier@prod500 ~ $ ./xpp-os.app
x=1
x=3 z=2 after [z=(x++)+(x++)]
mtrapier@prod500 ~ $
Le testcase est trop simple pour etre significatif mais bon quand meme meme avec optimisation ça ne casse pas le resultat
pour rigoler :
mtrapier@prod500 ~ $ gcc xpp.c -O9 -o xpp-o9.app
mtrapier@prod500 ~ $ ./xpp-o9.app
x=1
x=3 z=2 after [z=(x++)+(x++)]
mtrapier@prod500 ~ $