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