在此介绍两种方法实现,第一种通过地址操作实现,但为了方便理解特意又用联合体实现了下,以便加深理解。(注:都是小端环境下实现的)
方法一:
int main(int argc, char * argv[])
{
float fValue;
printf_s("Please enter a float value:");
scanf("%f",&fValue);
while (fValue) //输入0的时候退出
{
unsigned char *cValue = (unsigned char *)&fValue;
printf_s("%x %x %x %x\n",cValue[0],cValue[1],cValue[2],cValue[3]);
printf_s("Please enter a float value:");
scanf("%f",&fValue);
}
return 0;
}
方法二:
int main(int argc, char * argv[])
{
union{
float fValue;
unsigned char c[sizeof(float)];
} un;
if (4 == sizeof(float))
{
printf_s("Please enter a float value:");
scanf("%f",&(un.fValue));
while (un.fValue) //输入0的时候退出
{
printf_s("%x %x %x %x\n",un.c[0],un.c[1],un.c[2],un.c[3]);
printf_s("Please enter a float value:");
scanf("%f",&(un.fValue));
}
}
else
printf_s("sizeof(float): %d\n",sizeof(float));
return 0;
}