Supongamos el siguiente código:
#include
int main()
{
int a = 1;
printf ("%d %d ", a++, a++);
printf ("%d\n", a);
return 0;
}
¿Cual es la salida impresa por pantalla?
Pues básicamente, depende del compilador: el estándar no define el orden en que se tienen que evaluar los argumentos. Incluso tampoco define el momento en el que el post-incremento o pre-incremento debe efectuarse…
Por ejemplo: el programa compilado con gcc escribirá «2 1 3», pero compilado con tcc escribirá «1 2 3», y en ambos casos, es correcto.