1、混合类型的算术表达中,最宽的数据类型成为目标转换类型
int ival=3;
double dval=3.14;
ival+dval;//ival转换为dval
这种转换有2个原则
1.为防止精度丢失,类型总被提升为较宽的类型
2.所有小于整型的整值类型的算术表达式在计算之前会转换为整型,包括char、signed char、unsigned char和 short int,如果int能表示unsigned int(short用半字,int用一个字表示),则unsigned short int也被转换为int,否则会 转换为unsigned int,即使其他类型不是int也会先转为int
2、用一种类型的表达式赋值给另一种类型的对象
int *pi=0;//0被转换为int*类型的指针指
ival=dval;//dval被截取为int值3
3、把一个表达式转换为一个函数调用,表达式的类型和形式参数的类型不同,目标转换为形式参数的类型
extern double sqrt(double);
sqrt(2);//2被提升为double的类型
4、从一个函数返回一个表达式,表达式的类型与返回类型不同,这时候转换为函数的返回类型
double diff(int ival1,int ival2)
{
return ival1-ival2;//返回值被提升为double类型
}