Por que printf ("% f", 0); dar comportamento indefinido?
A declaração
printf("%f\n",0.0f);
imprime 0.
No entanto, a declaração
printf("%f\n",0);
imprime valores aleatórios.
Percebo que estou exibindo algum tipo de comportamento indefinido, mas não consigo descobrir o porquê especificamente.
Um valor de ponto flutuante no qual todos os bits são 0 ainda é válidofloat
com o valor 0.float
eint
são do mesmo tamanho na minha máquina (se isso for relevante).
Por que usar um literal inteiro em vez de um literal de ponto flutuante emprintf
causar esse comportamento?
P.S. o mesmo comportamento pode ser visto se eu usar
int i = 0;
printf("%f\n", i);