当前位置: 首页 > news >正文

%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"); }
http://www.jsqmd.com/news/167007/

相关文章:

  • documentFragment api是什么,有哪些使用场景
  • Anaconda下载太慢?试试Miniconda+清华镜像极速替代方案
  • INTOUCHDRIVES直流调速器ID271M/70/380 E-01(过流)故障问题分析及解决方案
  • iOS开发者自带弱网测试工具界面说明
  • 使用Miniconda-Python3.10镜像降低GPU服务器运维成本
  • 对比zero-shot,few-shot两种提示方式
  • SSH隧道转发端口访问Jupyter:Miniconda-Python3.10实战教学
  • 如何使用Jenkins来定时执行JMeter脚本,并查看测试报告
  • 【onnx-mlir】IndexExpr功能学习
  • KakaoTalk账号总被封?2026 最新教程与系统性解决方案
  • Miniconda-Python3.10镜像如何提升你的深度学习工作效率?
  • 2025年硅钢氧化镁/水处理氧化镁/电缆氧化镁生产公司推荐 - 工业品牌热点
  • Jupyter Notebook直连远程GPU服务器:Miniconda镜像配置详解
  • 利用Miniconda轻量级优势,构建专属Python AI开发容器
  • C语言syslog()函数(deepseek)
  • 智能梯控系统的关键设备参数,包括主控设备、扩展模块、识别终端及管理软件
  • YOLOv8安装配置全流程,一篇文章带你进入YOLOv8奇妙世界!(内涵yolov8资源)
  • 2025年值得推荐的企业咨询正规机构排行榜,企业法律咨询优质供应商精选 - 工业品牌热点
  • 2025年北京靠谱汽车贴膜排行榜,售后完善的汽车窗膜公司与品牌企业推荐 - 工业推荐榜
  • 利用Miniconda管理多个PyTorch项目环境,避免依赖冲突
  • 在Linux系统中使用Miniconda安装PyTorch并启用GPU加速
  • 巴菲特的企业价值与投资回报
  • 大数据时代的数据网格(Data Mesh)实践指南
  • 2025北京诚信的隐形车衣公司TOP5权威推荐:甄选有名的隐形车衣品牌 - 工业推荐榜
  • 手把手教你用Miniconda配置PyTorch+TensorFlow双框架环境
  • 职场新人如何快速掌握结构化表达,提升沟通效率与专业形象
  • 在VS Code中简洁高效配置LaTeX编译链 - Invinc
  • 一篇文章讲明白tf-idf,BM25
  • Windows11 安装 Ubuntu22.04 双系统,实现在 Ubuntu22.04 中安装Unreal Engine(UE4.27)和 AirSim
  • 2025最新!研究生必看9款AI论文软件测评与推荐