当前位置: 首页 > 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.gsyq.cn/news/182608.html

相关文章:

  • 对比zero-shot,few-shot两种提示方式
  • Miniconda-Python3.10镜像如何提升你的深度学习工作效率?
  • C语言syslog()函数(deepseek)
  • 利用Miniconda轻量级优势,构建专属Python AI开发容器
  • 2025年北京靠谱汽车贴膜排行榜,售后完善的汽车窗膜公司与品牌企业推荐 - 工业推荐榜
  • 一键部署PyTorch+GPU环境:Miniconda-Python3.10镜像全面解析
  • 2025北京诚信的隐形车衣公司TOP5权威推荐:甄选有名的隐形车衣品牌 - 工业推荐榜
  • 手把手教你用Miniconda配置PyTorch+TensorFlow双框架环境
  • SSH免密登录Jupyter服务器:提升AI开发效率的关键一步
  • 接口测试--Day1 - R
  • CentOS 8 完整实现 Rsyslog 日志写入 MySQL 数据库
  • 众包地图十年演进(2015–2025)
  • CondaError频繁出现?掌握这几点彻底告别环境激活问题
  • Jupyter Lab远程访问配置:基于Miniconda-Python3.10镜像的安全设置
  • 主流AI降重工具实测对比:功能、效果与学术适用性分析(2025年更新)
  • rust解引用2
  • 清华镜像加速pip install,Miniconda环境下PyTorch安装提速50%
  • 自动泊车十年演进(2015–2025)
  • 微电网调度的生存指南:当鲁棒优化遇上MATLAB
  • 2025年口碑好的工程专用市政路灯厂家排行榜,7米市政路灯源头厂家实力测评推荐 - myqiye
  • PyTorch安装失败常见问题汇总及Miniconda环境修复方法
  • Jupyter Lab在Miniconda环境中的配置技巧与常见问题解决
  • PyTorch安装失败原因汇总及Miniconda-Python3.10解决方案
  • Markdown技术博客写作利器:用Miniconda-Python3.10搭建Jupyter笔记环境
  • Linux系统下Miniconda的安装与初始化全过程图解
  • Miniconda环境迁移实战:复制PyTorch配置到多台服务器
  • Linux下PyTorch安装教程GPU加速版,配合Miniconda更流畅
  • HTML+Python动态网页生成:基于Miniconda-Python3.10的自动化脚本实践
  • Markdown+Jupyter:用Miniconda-Python3.10输出高质量技术文档
  • Conda环境管理进阶技巧:隔离PyTorch与TensorFlow不冲突