在C语言数据在内存中的存储一篇中我引出了这样一道引例,并由此介绍了浮点数是如何在内存中存储的,现在我们理论成立,实践开始,借助浮点数的存储方式来重新审视这道题:
#include<stdio.h>
int main()
{
int n = 9;
float* pf = (float*)&n;
printf("n的值为:%d\n", n);
printf("*pf的值为:%f\n", *pf);
*pf = 9.0;
printf("n的值为:%d\n", n);
printf("*pf的值为:%f\n", *pf);
return 0;
}
首先,第一个n为9毫无疑问,将一个整型以整型类型打印,二者相匹配所以打印出9.
对于pf来说,它是一个类型为float*的指针变量,它会站在float的角度看待内存中的n.
n=9;
//00000000 00000000 00000000 00001001 ——原码
//pf会以浮点数的角度划分n:
//0 00000000 00000000000000000001001