int main()
{
float f = 12.2;
char *p1;
p1 = (char *)&f;
printf ("%d", *p1);
}
Run Code Online (Sandbox Code Playgroud)
这输出51.
pax*_*blo 17
你可以把它float*变成一个char*很好的,这是使用这样一个可能有问题的野兽.
当您取消引用它时,您只需获取char第一部分的表示(但请参见下文,以了解它的真正含义,并不像您想象的那样清晰).
如果你在谈论IEE754浮点数,IEEE754浮点数为12.2(abcd是八位位组):
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM (sign, exponent, mantissa).
0 10000010 10000110011001100110011
a aaaaaaab bbbbbbbccccccccdddddddd
Run Code Online (Sandbox Code Playgroud)
将00110011在最后的是,你所看到的51(0x33).你看到浮点数的最后一位的原因是因为它在内存中存储(在小端架构中):
00110011 00110011 01000011 01000001
dddddddd cccccccc bbbbbbbb aaaaaaaa
Run Code Online (Sandbox Code Playgroud)
这意味着意志的char*演员float*指向该dddddddd部分.
在大端架构,你会得到aaaaaaaa位,01000001或65(0×41).
| 归档时间: |
|
| 查看次数: |
2685 次 |
| 最近记录: |