整型(包括int 、short和long)、单精度浮点型、双精度浮点型数据都是数值型数据,字符型数据与整型通用。因此,整型、实型、字符型数据间可以进行混合运算。例如:
这是合法的表达式。在进行运算时,C语言编译系统自动把不同类型的数据先转换成同一类型,然后进行运算。转换的规则如图2-8所示。
具体转换规则如下:
(1)图中横向向左的箭头表示必定的转换。如char型与short型必定先转换为int型;float型数据在运算时一律先转换为double型,以提高运算精度(即使是两个float型数据相加,也都先转换为double型,然后再相加)。
(2)纵向的箭头表示当运算对象为不同类型时转换的方向。例如,int型与double型数据进行运算,先将int型的数据转换为double型,然后在两个同类型(double型)数据间进行运算,结果为double型。
图2-8 数据间的转换规则
(3)箭头方向只表示数据类型级别的高低,由低向高转换。不要理解为int型先转换为unsigned型,再转换为long型,最后转换为double型。如果一个int型数据与一个double型数据运算,是直接将int型转换为double型。如果两个数据中最高级别为long型,则另一个数据先转换为long型,运算结果为long型。其他依此类推。例如:(www.daowen.com)
若表达式为:
其运算次序为:
1)进行2 + 'a'运算,先将'a'转换为整型数据97,运算结果为99。
2)进行i*f的运算。先将i与f都转换为double型,运算结果为double型。
3)整数99与i * f的积相加。先将整型数据99转换为double型(小数点后加若干个0,即99.000...00),运算结果为double型。
上述的类型转换是由系统自动进行的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。