自动类型转换:
字符型数据可以与整型数据通用,因此,整型、字符型、实型(包括单、双精度)数据可以出现在一个表达式中进行混合运算。例如:已定义i为int变量,f为float型变量,d为double型变量,l为long型变量,有下面的式子:
100+'A'+i*f-d*l
[url=file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles1A70DC/clip_image002[3].gif]file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles1A70DC/clip_image002_thumb.gif[/url]
是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算,转换的规则如图2-2所示。图中横向箭头表示必定的转换,如字符数据必定先转换为整数,short型转换为int型,float型数据在运算时一律先转换成双精度型,以提高运算精度(即使是两个float型数据相加,也要先转换成double型,然后再相加)。
纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与double型数据进行运算,先将int型的数据转换成double型。然后再进行两个同类型(double型)数据间运算,结果为double型。
注意:箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先转成unsigned型,再转成long型,再转成double型。如果一个int型数据与一个double型数据运算是直接将int型转成double型。同理,一个int型与一个long型数据运算,也是先将int型转换成long型。
上式运算次序为:
①进行100+'A'的运算,先将'a'转换成整数65,运算结果为165;
②进行i*f的运算,先将i与f都转换成double型,运算结果为double型;
③整数165与i*f的值相加,先将整数165转换成双精度数(小数点后加若干个0,即165.000000),运算结果为double型;
④将变量l转换成double型,d*l结果为double型;
⑤将100+'A'+i*f的结果与d*l的结果相减,结果为double型。
上述的类型转换是由系统自动进行的。
转载请注明来自秦工的博客,本文地址:http://www.arm32.com/post/11003.html |