【C语言】浮点型在内存当中的存储

举报
謓泽 发表于 2023/09/23 19:18:22 2023/09/23
【摘要】 【C语言】浮点型在内存当中的存储。

浮点型在内存当中的存储

常见的浮点数:

  • 3.14 、1E10(这个其实就是1.0✖10的10次方—E)

浮点数包括:

  • C语言中的浮点类型有float、double 和 long double 类型。

记数法实例:

  1. 第1列是一般记数法
  2. 第2列是科学记数法
  3. 第3列是指数记数法(或称为e记数法);
  • 这是科学记数法在计算机中的写法,e后面的数字代表10的指数;

接下来给大家看一个代码:

#include <stdio.h>
int main(void)
{	
	int n = 9;
	float *pFloat = (float *)&n;
	printf("*pFloat的值为:%d\n",n);
	printf("*pFloat的值为:%lf\n", *pFloat);

	*pFloat = 9.0;
	printf("num的值:%d\n", n);
	printf("*pFloat的值为:%lf\n",*pFloat);

	return 0;
}
  •  运行结果:

  • 从上述代码可以看出:浮点型和整形的内存的存储的形式不一样!
  • 可能会有些小伙伴有些疑问,为什么第二行运行结果的*pFloat的答案是:0.000000,还有第三行的num的运行结果是:1091567616,我觉得因该是 9.000000 和 9啊。好,别着急现在就来说说为什么!
  • 打印:0.000000是因为:整形的形式放进去的时候在以浮点数的形式往后拿的话,拿不到我们期望的一个结果,那是不是可以说明整形的存储结果和浮点型的存储的方式是不一样的,如果一样那就是一样的结果了
  • 打印:1091567616是因为:*pFloat我们是用浮点数的形式存放进去的,然后以n的正数形式在拿的时候是整数的形式拿出来的,拿出来了一个错误的值
  • 从这里就说明了整形的存储方式和浮点型的存储方它们是由区别的💨
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。