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

不同数据类型转换与转义的对比差异

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

在C和C++语言中,类型转换与转义是有点像的,有时可能被误解,这块需要仔细辨别。

类型转换形如,把不同字节数或相同字节数的类型值进行转换,强调的是数值转换过去,也就是取值后把取值给对方,对方的取值范围可能覆盖住,也可能不能覆盖住,不能覆盖时就会出现数据截断。

例如:
float f = 1.0;
bool b = f;
char c = f;
short s = f;
int n = f;
double d = f;
printf(“n=%d, c=%d, b=%d, s=%d\n”, n, c, b, s);
打印结果:
f=1.000000, b=1, c=1, s=1, n=1, d=1.000000

例如,类型转换,发生截断的情况:
int n = 65536 + 255;
char c = n;
bool b = n;
short s = n;
printf(“n=%d, c=%d, b=%d, s=%d\n”, n, c, b, s);
打印结果:
n=65791, c=-1, b=1, s=255

上面是类型转换的情况。可以看出,转换时,是值传递的过程,是从类型上取出数值,然后把数值给另一个类型的变量。我们知道float与double是采用的科学计数法,int与short等采用的正值原码+负值补码形式,字节的设定方式是完全不同的的,但是类型转换时,并不对值设定产生冲击,采用的是值传递给对方的方式。

类型转义的情况就不同了,类型转义,通常是字节相同的情况,把一个类型的二进制数据,当成另一种类型来使用。
类型转义,涉及对一块数据进行重新解释的含义。把一块数据当成某种类型进行使用,而不考虑这块数据原来是什么字节的分布,怎么设定出来的。

例如把float类型当成int类型来取值使用:
float f = 1.0;
int n = * (int *)&f;
int &m = * (int *)&f;
int q = * reinterpret_cast<int *>(&f);
int& t = reinterpret_cast<int&>(f);
printf(“f=%f, n=%d, m=%d, q=%d, t=%d\n”, f, n, m, q);
打印结果:
f=1.000000, n=1065353216, m=1065353216, q=1065353216, t=1065353216

转义取值的过程是,先把数据的地址指针或引用取出来,然后对指针或引用强制当成另一种类型来使用、来取值。
使用reinterpret_cast时也是是一样,把指针、引用类型进行重新解释,解释当成另一种类型,然后对外进行使用。

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

http://www.lryc.cn/news/461472.html

相关文章:

  • Kylin系统安装VMwareTools工具
  • uni-app 拍照图片添加水印
  • Docker-registry私有镜像仓库的安装
  • 在vue3中实现祖组件给后代组件传参,可以跨域几层。
  • 【优选算法】——双指针(上篇)!
  • 【C语言】数据输出格式控制
  • Qt-界面优化选择器的用法(70)
  • 全国职业技能大赛——信息安全管理与评估第一阶段BC、FW、WAF题目详细解析过程
  • 基于Vite创建项目
  • 面试题:在 React 中如何绑定事件
  • 前端将JSON或者table直接导出为excel
  • 算法之排序
  • 深度学习:LSTM循环神经网络实现评论情感分析
  • 基于Arduino的环境监测装置
  • 深度学习:模型攻击(Model Attack)详解
  • CesiumLab介绍
  • PyQt 入门教程(3)基础知识 | 3.2、加载资源文件
  • 老照片修复工作流教程:用 ComfyUI 轻松还原历史记忆
  • ESP-IDF Blink实例学习
  • QT QML 练习8-Simple Transformations
  • 低空产业园搭建技术详解
  • Python网络爬虫从入门到实战
  • 探索Theine:Python中的AI缓存新贵
  • js拼图(神鹰黑手哥)
  • 值得推荐的五款数据恢复工具!!
  • 股票金融市场中的tick,分钟,日线数据
  • OKG Research:如何衡量链上数据的开放价值?
  • 向日葵下载教程以及三款远程控制工具推荐!!!
  • Studio One 6中文版及最新功能介绍 Studio One 6音乐软件安装包
  • 【数据结构】栈和队列 + 经典算法题