隐式类型转换
1. 混合算术运算中,最宽的类型为目标转换类型
int x = 2.32+2; //2被提升为double型
2. 赋值运算中,被赋值对象为目标转换类型
int x = 2.32+2 //2被提升为double型后,相加为4.32 double再转换为int, 赋值给x, 注意小数位直接舍去。
3. 函数调用参数中
double sqrt(double); sqrt(2); //会将2转为double型
4. 函数调用返回值中
double sqrt(double)
{
return 2; //2会被转为double型
}
算术转换
1. 为防止精度损失,类型总是转换为较宽的类型
2. 所有小于整形的有序序列表达式中,在运算前都会转为整形
char cval;
bool found;
enum mumble{m1, m2, m3} mval;
unsigned long ulong;
char c1='a', c2='b';
cval+ulong; //可认为cval先转为int型,再进行计算
sizeof(c1+c2); //会先将c1, c2都转换为int型
unsigned int 与int相比,unsinged为较宽的
有些例外,如long型+ unsinged int型,会都转为unsigned long(32位操作系统)
c++表达式--类型转换
最新推荐文章于 2024-08-11 20:47:27 发布