¿Por qué printf ("% f", 0); dar un comportamiento indefinido?
La declaración
printf("%f\n",0.0f);
imprime 0.
Sin embargo, la declaración
printf("%f\n",0);
Imprime valores aleatorios.
Me doy cuenta de que estoy exhibiendo algún tipo de comportamiento indefinido, pero no puedo entender por qué específicamente.
Un valor de coma flotante en el que todos los bits son 0 sigue siendo válidofloat
con valor de 0.float
yint
son del mismo tamaño en mi máquina (si eso es relevante).
¿Por qué usar un literal entero en lugar de un literal de coma flotante enprintf
causar este comportamiento?
PD se puede ver el mismo comportamiento si uso
int i = 0;
printf("%f\n", i);