数据类型转换及注意事项
来源:互联网 发布:大规模并行处理数据库 编辑:程序博客网 时间:2024/04/30 06:10
在C++中存在三种类型的数据类型转换。1.是隐匿自动转换 2.强制类型转换 3.赋值类型自动截断转换。而对于这三种转换存在相应的规则,它们分别就下面的三种规则进行相应的处理。
1.就长不就短原则:即参与表达式计算的变量遵从类型长度最大的原则,在参加运算前把所有变量类型转换成类型最大的那种类型。也称为类型自动提升。这种方式进行的运算具有最大的安全性。所有参与数据都在最大的空间时进行计算,不会出现截断及数据错误等现象。
2.就左不就右原则:此原则用在相应的赋值阶段,即赋值表达式右边的类型要遵从左边的类型。也就是说一切向左边看齐,不管这个类型是大还是小。这种类型转换存在相应风险。因为右边的数据类型可能比左边的要大,而把一个大的物体放入一个小的物体中,必然会发生溢出现象。此时就会发生数据截断,导致截断后数据错误。
例:
int a;
long b = 65536;
a = b; 此时a的结果为0
此时b的在内存中所存在的二进制是:
00000000 00000001 00000000 00000000
而a在内存中只占两个字节,所以b截断后,就把b的低16位赋值给了a,此时a在内存中所存在的二进制就是
00000000 00000000 //所以a的结果为0
3.强制类型转换:即把变量类型强制转换,格式:(类型)变量a //此时就是把变量a强制转换成指定的类型。此种转换形式也具有截断的风险,极有可以导致数据错误。形式与第二条相似。
类型转换注意事项:
1.参与表达式计算的变量或常量,类型转换时只是产生一个临时的数据类型及值,而原来的变量的数据及数据类型并不会改变。
2.数据类型转换消耗系统时间,过多的类型转换降低程序运行效率。
3.运算结果存入变量的类型转换,不管是自动还是强制的,当把数据较长的结果存入数据较短的变量时,会发现截断,将截去超长的部分,造成数据错误。
个人技术网站
- 数据类型转换及注意事项
- 【C++注意事项】1 数据类型及类型转换
- MySql中的数据类型转换注意事项
- Java中数据类型转换注意事项
- Swift数据类型及数据类型转换
- JavaScript数据类型及数据类型转换
- 数据类型进阶及数据类型转换
- C#数据类型及数据类型转换
- java 数据类型及转换
- java 数据类型及转换
- Matlab数据类型及转换
- Matlab数据类型及转换
- java数据类型及转换
- js数据类型及转换
- Java-数据类型及转换
- 变量,数据类型及转换
- JavaScript 数据类型及转换
- C语言数据类型强制转换注意事项
- cacti snmp 排查
- JavaWeb 之 Servlet入门
- winform treeview checkbox----递归算法利用
- 修改方维社区分享的首页导航
- hdu 1247 Hat’s Words
- 数据类型转换及注意事项
- 快速排序
- 安装Eclipse插件
- 单身快乐(致一个人的情人节)
- 华为机试
- 邮件服务器错误代码解析
- 利用js实现全选、全部选、反选功能
- 第11章 GUI 09 持有对方引用
- java.lang.Class类的详细解释和用法