C语言规定,不同类型的数据需要转换成同一类型后才可进行计算。
相同类型之间:
1.字符必须先转换为整数
2.short型转换成int型
3.float转换成double,以提高运算精度
4.赋值时,一律右部值转换成左部类型
不同类型之间:
1.当整型数据和双精度数据进行运算时,则先将整型数据转换成双精度类型,再进行运算,结果为双精度型数据。
2.当字符型数据和实型数据进行运算时,则先将字符型数据转换成实型数据,再进行运算,结果为实型数据。
C语言规定的转换规则是由低级向高级转换
char,short —> int —> unsigned —>long —>double <—float
低级 ——————————————————->高级
例如
x=100+’a’+1.5 * u+f/’b’-s * 3.1415926
其中,u为unsigned型,f为float型,s为short型,x为float型。
式中右面表达式按如下步骤处理:
(1)首先将’a’、’b’和s换成int,将1.5和f转换为double型。
(2)计算100+’a’,因’a’已转换为int型,于是此运算结果为197。
(3)计算1.5*u,由于1.5已转换为double,u是unsigned型,于是首先u转换为double,然后进行运算,运算结果为double。
(4)计算197+1.5 * u,先将197转换为double(如197.00…00),其结果为double。
(5)计算f/ ‘b’,f已转换为double,’b’已转换为int,于是先将’b’再转换为double,其结果为double。
(6)计算(197+1.5 * u)+f / ‘b’,者均为double,于是结果也为double。
(7)计算s * 3.1415926,先将s由int转换为double,然后进行运算,其结果为double。
(8)最后与前面得的结果相减,结果为double。
(9)最后将表达式的结果转换为float并赋给x。