int型数1、2在内存中以二进制形式存储,把它当做double型读出来,应该是多少?注意:这里不是强制类型转换

2025-02-26 06:57:14
推荐回答(4个)
回答1:

当用double读取时,如果是int型会读取int后32位值,而当用int读取时,如果是double型会只读取前32位,出来的都是垃圾值。 如果在内存中float型自动会优化成double存储。

回答2:

int a=1;
printf("%e",*(float*)&a); //要以%e格式输出,%f的话只会输出0

根据IEEE754规范,这个值应该是2^(1-127-23)==2^(-149)==1.4012984643248170709237295832899e-45
详细规则你可以网上搜索IEEE754规范(浮点数存储格式)

回答3:

int是32位, double是64位, 读取会有内存溢出.

回答4:

自己算难度太大,你们老师也不会。需要查阅浮点数格式

可以通过程序输出出来

#include
int main()
{
int n = 1;
printf("%f\n", *(float *)&n);
n = 2;
printf("%f\n", *(float *)&n);
getchar();
}