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