Что делает (float*)
специально делать в случае g. Если я напишу g = *&i;
, то вывод будет нормальным, т. Е. G = f, но если g = *(float*)&i;
, то почему g = 0,0000 ???Тип литья указателя для разных типов данных
#include <stdio.h>
int main()
{
int i = 37;
int *p;
p = &i;
float f = i;
printf("%d\n", i);
printf("%d\n", p);
printf("%d\n", *p);
float g = *(float*) &i;
printf("i = %d f = %f g = %f", i, f, g);
}
Что такое «переинтерпретация целочисленного указателя на указатель с плавающей точкой» и как он отличается от «назначения int в float»? –
'int' to' float' присваивание может потерять значимость, если значение 'int'> = 2 ** 24. –
отредактирован с более подробной информацией. @WeatherVane в порядке (я понимаю, 24 лучше, чем 16). –