2-6 C浮点数指针运算案例

1.0 浮点数指针


float f= 1.2f:如何将它对应的4个字节地址空间的数值以十六进制打印出来?

数据在所有计算机中都是以二进制形式存储的,然后以8个位为一个单元称作"字节" ,作为计

量和运算处理单元,比如我们说一个文件大小是1MB,指的是1M字节;

在计算机中,每个字节都有它对应的地址,类似于门牌号,CPU通过地址来访问这个字节空间


2.0 引入数据类型


对于计算机硬件系统,二进制01数据没有任何意义 ,为了有效的组织管理这些数据,人为的规
定了数据类型去解释这些二进制数据
:


3.0 应用案例


cpp 复制代码
int main(void)
{
	float f = 1.2f;
	uint8_t *p;
	p = (uint8_t *)&f;
	printf("*p = %#x.\n",*p);
	p++;
	printf("*p = %#x.\n",*p);
	p++;
	printf("*p = %#x.\n",*p);
	p++;
	printf("*p = %#x.\n",*p);
	return 0;
}

运行以上程序输出如下结果:


uint8 tvalue4={0x9A,0x99,0x99,0x3F};如何转换为float类型数值并打印?

案例分析:

  1. 可以定义float *f,用它来保存数组的首地址
  2. 但是此时由于类型不匹配,需要强制类型转换
  3. 然后可以使用*f去访问这段内存空间了,调用printf函数
cpp 复制代码
int main(void)
{
	uint8_t value[4] = {0x9A, 0x99, 0x99, 0x3F};
	float *f = (float *)value;
	printf("*f = %.1f\n",*f);
	return 0;
}

运行以上程序输出如下结果:

...

相关推荐
阿尼卡~19 分钟前
VS Code 配置 C 语言开发环境(Windows 10/11):从 GCC 安装到运行、断点调试,一篇搞定
c语言·开发语言·windows
hhhjhl2 小时前
Undici 跨端三方库仓颉适配全流程
java·开发语言·ubuntu
染指11102 小时前
158.Agent-LangGraph-子图(共享状态和不共享状态模式)
开发语言·人工智能·python·ui·agent·agents
wangchunyu1142 小时前
JAVA JVM内存结构与运行时数据区
java·开发语言·jvm
slongzhang_2 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
云和数据.ChenGuang3 小时前
Python 常见特殊方法详解:__new__、__init__、__del__、__str__、__repr__ 与 __getattribute__
开发语言·人工智能·python·1024程序员节
xyouyuweizhu4 小时前
字节流与字符流:Java IO 的两条主线该怎么选
java·开发语言·python
多弗朗皮卡丘4 小时前
C++的IO流
开发语言·c++·io流·文件io流
骑着蜗牛撵大象3275 小时前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
itmigrate5 小时前
Rust 里的所有权误区:不是不写 clone 就叫高性能
开发语言·后端·rust