news 2026/10/15 15:45:03

%d输出float类型,%f输出int类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
%d输出float类型,%f输出int类型

几个要注意的点:
1.并不会隐式类型转换,只是以%d的存储形式(低32位),%f(double类型的存储形式)输出
2.浮点数输出时都是以double类型的存储形式输出的,虽然在内存上以float类型存储形式存储的
3.float,double类型的存储形式遵循IEEE754标准,详情请查看IEEE754标准:double,float类型在内存中具体是怎么存的
4.像int->float,float->int等基本数据类型转换,会进行比特位的转换
5.int*->double*(所指向的空间并不进行比特位的转换),重新解释指针为:以int为一个模块操作指针->以double为一个模块操作指针

// 输出格式与类型不一致,输出结果实际上与存储有关 // 1.int以%f格式输出,结果一般为0.000000 // 2.long long 类型的很大的数,用printf(“%f”)打印出来可能为一个小数; // 3.double、float以%d格式输出(输出时,float会转化为double存储形式;%d取低32位) // (1)结果一般为绝对值很大的数(当浮点数不能精确表示时,低32位不为0) // (2)结果为0,如:xx.0、或xx.5、或xx.25等(当浮点数能精确表示时,低32位为0) #include <stdio.h> int main() { // int以%f格式输出,结果一般为0.000000 // float以%d格式输出 // 结果一般为绝对值很大的数 // 结果为0,若浮点数为xx.0、或xx.5、或xx.25等 printf("%f\n", 1); // 结果:0.000000 printf("%f\n", 0xffffffff); // 结果:0.000000 printf("%f\n", 0x3ff3ae147ae147a3); // 结果:1.230000 printf("%d\n", 2.34); // 结果:-343597384 printf("%d\n", 5.78); // 结果:1374389535 printf("%d\n", 1.0); // 结果:0.000000 printf("%d\n", 2.0); // 结果:0.000000 printf("%d\n", 2.5); // 结果:0.000000 printf("%d\n", 103.25); // 结果:0.000000 printf("----------------------------------------------------------------------------\n"); // 若想输出转换后的类型,必须强制类型转换(会容易让人混淆,因为感觉上会隐式类型转换,但实际上 // 没有"=",不会自动转换) printf("%f,%d\n", (double)1, (int)1.0); // 结果:1.000000,1 printf("----------------------------------------------------------------------------\n"); // int*->double*,只是指针类型的转换(所指向的空间并不进行比特位的转换)。 int c = 1; int *p_int = &c; double *p_double = NULL; p_double = (double*)p_int; printf("llx:0x%llx\n", *p_double); // 查看double指向的内存空间有什么数据,我这里内存中存了:0x1b00000001 printf("%f,%d\n", *p_double, *p_double); // 结果:0.000000,1 // 实际上int的存储结构没变,将double指向的内存空间的数据(0x1b00000001)以%f格式输出 // 应该这么转 double c2 = (double)c; // 转成了了double类型的存储形式(进行了比特位的转换) double *p_double2 = &c2; printf("llx:0x%llx\n", c); // 内存中存了(比特位):0x1 printf("llx:0x%llx\n", *p_double2); // 内存中存了(比特位):0x3ff0000000000000 printf("%f,%d\n", *p_double2, *p_double2); // 结果:1.000000,0 printf("----------------------------------------------------------------------------\n"); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 9:38:30

【接口测试】6_PyMySQL模块 _删除员工接口使用数据库工具类

文章目录一、思路分析二、案例2.1 相关代码解读2.1.1 删除接口基本实现2.1.2 构造测试数据2.1.3 校验is_delete字段值2.2 完整代码实现一、思路分析 构造测试数据&#xff1a; 删除员工所需要的 员工id&#xff0c;在测试删除员工接口之前&#xff0c;通过 insert 语句&#x…

作者头像 李华
网站建设 2026/10/11 2:20:58

SSH免密登录Jupyter服务器:提升AI开发效率的关键一步

SSH免密登录Jupyter服务器&#xff1a;提升AI开发效率的关键一步 在深度学习项目频繁依赖远程GPU服务器的今天&#xff0c;你是否也经历过这样的场景&#xff1a;深夜调试模型时&#xff0c;反复输入服务器密码、手动启动Jupyter、复制Token链接……每一步看似简单&#xff0c;…

作者头像 李华
网站建设 2026/10/14 10:16:24

Python安装路径冲突怎么办?Miniconda沙箱机制来帮忙

Python安装路径冲突怎么办&#xff1f;Miniconda沙箱机制来帮忙 在一台开发机上同时跑着三个项目&#xff1a;一个老项目的模型训练脚本要求TensorFlow 1.15和Python 3.7&#xff0c;另一个新项目用上了PyTorch 2.0需要Python 3.10&#xff0c;而第三个数据分析任务又依赖panda…

作者头像 李华
网站建设 2026/10/15 15:42:29

Jupyter Lab远程开发配置:打通SSH与浏览器安全通道

Jupyter Lab远程开发配置&#xff1a;打通SSH与浏览器安全通道 在当今数据科学、人工智能和工程研发的日常工作中&#xff0c;越来越多开发者面临一个共同挑战&#xff1a;本地机器算力有限&#xff0c;而实验所需的计算资源却日益增长。无论是训练深度学习模型&#xff0c;还是…

作者头像 李华
网站建设 2026/10/12 18:49:18

ADAS十年演进(2015–2025)

ADAS十年演进&#xff08;2015–2025&#xff09; 一句话总论&#xff1a; 2015年ADAS还是“被动安全AEB/LKA等基础功能的高端配置”&#xff0c;2025年已进化成“主动智能城区NOA记忆泊车端到端VLA大模型融合”的全场景普惠标配&#xff0c;中国从跟随者跃升全球领跑者&#x…

作者头像 李华
网站建设 2026/10/13 7:54:10

智能驾驶规划控制算法十年演进(2015–2025)

智能驾驶规划控制算法十年演进&#xff08;2015–2025&#xff09; 一句话总论&#xff1a; 2015年规划控制算法还是“规则Frenet优化MPC”的刚性工程时代&#xff0c;2025年已进化成“端到端VLA大模型游戏论博弈强化学习自适应量子级不确定性控制”的语义社交闭环&#xff0c;…

作者头像 李华