我是C语言新手,我尝试了以下内容:
float f = 0x41933333;
这应该给我浮点数:18.4
,但当我查看内存时,我发现十六进制值:
66 26 83 4e
表示浮点数:41933333.0000
为什么我的十六进制值解释为十进制数?
0x41933333
为整型常数。当分配给float
时,将转换整数。如果需要十六进制浮点常量,则必须显式使用该表示法:
0x0.933333P4
或者类似的东西—我只是随便猜测一下正确的值是什么,但是0x
前缀和P
指数是十六进制浮点常数的关键部分。详细信息请参见ISO/IEC 9899:2011中的6.4.4.2浮动常量。
或者,您可以通过将int型的值解释为float
来执行强制转换。unsigned int n = 0x41933333;
float f = *((float*)&n);
如果您想直接插入原始值,请使用联合。