1、在混合类型的算数表达式中:
最宽的数据类型成为目标转换类型。【也称之为算术转换】
int ival = 3;
double dval = 3.14159;
//ival被提升为double类型3.0
ival+dval;
2、用一种类型的表达式赋值给另一种类型的对象
int *pi = 0; //常量整数0被转换为 int *类型的空指针值
ival = dval; //dval被截取为int值3
3、把一个表达式传递给一个函数,调用表达式的类型与形式参数的类型不相同
extern double sqrt ( double );
cout<<sqrt(2)<<endl; //2被提升为double类型。
4、从一个函数返回一个表达式的类型与返回类型不相同
double difference(int ival1, int ival2)
{
return ival1 - ival2; //返回值被提升为double类型
}
算术转换基本原则:
1、为防止精度损失,如果必要的话,类型总是被提升为较宽的类型。
2、所有含有小于整型的有序类型的算术表达式在计算之前其类型都会被转换成整型。