首页 百科知识 数据转换与清洗类型转换

数据转换与清洗类型转换

时间:2022-10-16 百科知识 版权反馈
【摘要】:自动类型转换是系统根据规则自动将两个不同数据类型的操作数转换成同一种数据类型的过程。纵向的箭头表示当运算对象为不同类型时转换的方向。不要理解为int型数据先转换成unsigned int型数据,再转换成long型数据,再转换成double型数据。将变量e化成double型,d/e结果为double型。例如,表达式6/4+6.7的计算结果为7.7,而表达式6.0/4+6.7的计算结果为8.2,原因是6/4按整型计算,并不因为6.7是浮点型而将其按浮点型计算。

2.5.1 自动类型转换

对于双目运算符,如果两个操作数的数据类型不相同,称为混合运算,编译系统进行自动类型转换。

自动类型转换是系统根据规则自动将两个不同数据类型的操作数转换成同一种数据类型的过程。而且,对于某些数据类型,即使是两个操作数的数据类型完全相同,也要同时转换为其他类型转换,如float。

转换的原则是:为两个操作数的计算结果尽可能提供多的存储空间。具体规则如图2.5.1所示。

img75

图2.5.1 自动类型转换规则

图2.5.1中横向向左的箭头表示必定的转换,如char型数据、short型数据必定先转换为int型数据,float型数据在运算时一律先转换成double型数据,提高运算精度(即使是两个float型数据相加,也都先转换成double型数据,然后再相加)。

纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型数据与double型数据进行运算时,先将int型数据转换成double型数据,然后再进行运算,结果为double型数据。

注意:箭头方向只表示数据类型级别的高低,由低向高转换。不要理解为int型数据先转换成unsigned int型数据,再转换成long型数据,再转换成double型数据。如果一个int型数据与一个double型数据进行运算,是直接将int型数据转换成double型数据。同理,一个int型数据与一个long型数据进行运算,是将int型数据直接转换成long型数据。其他依此类推。

假设已指定i为int型变量,f为float型变量,d为double型变量,e为long型变量,有表达式:

  25+'c'+i * f−d/e

运算次序为:(1)进行25+'c'的运算,先将'c'转换成整数99,运算结果为124。(2)由于*比+优先,先进行i*f的运算。先将i与f都转换成double型,运算结果为double型。(3)整数124与i*f的积相加。先将整数124转换成double型,结果为double型。(4)将变量e化成double型,d/e结果为double型。(5)将25+'c'+i * f的结果与d/e的商相减,结果为double型。

需要说明的是,自动类型转换只针对某个运算符两个操作数,不能对表达式的所有运算符做一次性的自动类型转换。

例如,表达式6/4+6.7的计算结果为7.7,而表达式6.0/4+6.7的计算结果为8.2,原因是6/4按整型计算,并不因为6.7是浮点型而将其按浮点型计算。

尽量避免不同类型的数据参加混合运算。尽量采用数据的强制类型转换。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈