news 2026/4/18 13:58:14

%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/4/18 8:15:01

大数据时代的数据网格(Data Mesh)实践指南

大数据时代的数据网格(Data Mesh)实践指南 关键词:数据网格, 领域驱动设计, 数据产品, 自助数据平台, 联邦治理, 分布式数据架构, 数据民主化 摘要:在数据爆炸式增长的今天,传统数据平台面临扩展性瓶颈和治理困境。数据网格作为一种新兴的分布式数据架构范式,通过领域驱动设…

作者头像 李华
网站建设 2026/4/18 8:30:17

一篇文章讲明白tf-idf,BM25

第一章基础概念1.1TF-IDF 核心概念TF-IDF 是文本向量化工具&#xff0c;核心目标是「把文本转化为可量化的关键词权重向量」&#xff0c;而非直接计算相似度&#xff1a;TF&#xff08;词频&#xff09;&#xff1a;一个词在某篇文档中出现的次数&#xff0c;反映该词在文档内的…

作者头像 李华
网站建设 2026/4/18 7:57:02

Jupyter Notebook直连远程GPU服务器:Miniconda镜像配置详解

Jupyter Notebook直连远程GPU服务器&#xff1a;Miniconda镜像配置详解 在深度学习项目开发中&#xff0c;一个常见的场景是&#xff1a;你在自己的笔记本上写代码&#xff0c;模型却跑不动——显存爆了、训练太慢、CUDA版本不兼容。于是你转向云上的A100服务器&#xff0c;却发…

作者头像 李华
网站建设 2026/4/17 22:51:55

CondaError频繁出现?掌握这几点彻底告别环境激活问题

CondaError频繁出现&#xff1f;掌握这几点彻底告别环境激活问题 在搭建Python开发环境时&#xff0c;你是否曾被 CondaError: unable to activate environment 这类错误反复折磨&#xff1f;明明昨天还能正常工作的命令&#xff0c;今天一登服务器却提示“conda: command not…

作者头像 李华
网站建设 2026/4/18 8:53:34

端到端(End-to-End)十年演进(2015–2025)

端到端&#xff08;End-to-End&#xff09;十年演进&#xff08;2015–2025&#xff09; 一句话总论&#xff1a; 2015年端到端还是“实验室概念小样本图像分类”的学术玩具&#xff0c;2025年已进化成“VLA大模型统一感知-意图-规划-控制零中间模块全场景L4–L5智驾/具身智能”…

作者头像 李华
网站建设 2026/4/18 9:41:30

感知算法十年演进(2015–2025)

感知算法十年演进&#xff08;2015–2025&#xff09; 一句话总论&#xff1a; 2015年感知算法还是“2D摄像头激光SLAM手工特征”的规则时代&#xff0c;2025年已进化成“多模态VLA大模型事件相机4D重建量子辅助鲁棒”的端到端具身感知&#xff0c;中国从跟随者跃升全球领跑者&…

作者头像 李华