miércoles, junio 01, 2011

Indefinición

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.
Publicar un comentario en la entrada