Почему printf («% f», 0); дать неопределенное поведение?
Заявление
printf("%f\n",0.0f);
печатает 0.
Тем не менее, заявление
printf("%f\n",0);
печатает случайные значения.
Я понимаю, что демонстрирую какое-то неопределенное поведение, но не могу понять, почему конкретно.
Значение с плавающей запятой, в котором все биты равны 0, все еще является действительнымfloat
со значением 0.float
а такжеint
одинакового размера на моей машине (если это даже актуально).
Почему использование целочисленного литерала вместо литерала с плавающей запятой вprintf
вызвать такое поведение?
Постскриптум такое же поведение можно увидеть, если я использую
int i = 0;
printf("%f\n", i);