刚学C语言数据的存储,了解了数据的存储格式,便出现了以下问题,希望帮我解答下;
当我定义一个float型变量a时,假设a=9.0,则a在32位系统中以浮点型格式存储为0100 0001 0001 0000 0000 0000 0000 0000,此时我用整型的格式去打印这个数,我预计程序应该是将该内存取出并以整型的方式去计算,结果应该是1091567616,但实际结果却是0;
代码如下:此代码输出为0;
int main()
{
float b = 9.0;
//0100 0001 0001 0000 0000 0000 0000 0000
printf("%d\n", b);
return 0;
}
如果我把代码写成这样,结果又与我预期相符合,下列代码输出为1091567616;
int main()
{
float b = 9.0;
//0100 0001 0001 0000 0000 0000 0000 0000
int* pb = (int*)&b;
printf("%d", *pb);
return 0;
}
这两个代码差别在哪,以及为什么第一个代码的执行结果和我的预期不相同?