表达式中的类型转换分为:隐含转换和强制转换。
在算术运算和关系运算中如果参与运算的操作数类型不一样,则系统会对其进行类型转换,这是隐含转换,转换的原则就是将低类型的数据转换为高类型数据。各类型从低到高依次为char,short,int,unsigned int,long,unsigned long,float,double。类型越高范围越大,精度也越高。隐含转换是安全的,因为没有精度损失。逻辑运算符的操作数必须是bool型,如果不是就需要将其转换为bool型,非0数据转换为true,0转换为false。位运算操作数必须是整数,如果不是也会自动进行类型转换,也是低类型数据转换为高类型数据。赋值运算要求赋值运算符左边的值和右边的值类型相同,不同的话也要进行自动转换,但这个时候不会遵从上面的原则而是一律将右值转换为左值的类型。比如,int iVal; float fVal; double dVal;则dVal=iVal*fVal;计算时先将iVal转换为跟fVal一样的float型,乘法的结果再转换为double型。
强制类型转换是由类型说明符和括号来实现的,使用形式为:类型说明符(表达式) 或 (类型说明符)表达式。它是将表达式的结果类型强制转换为类型说明符指定的类型。比如,float fVal=1.2; int iVal = (int)fVal;计算后面表达式的值时会将1.2强制转换成1,舍弃小数部分。