脚本宝典收集整理的这篇文章主要介绍了C++ 隐式类型转换,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
C++ 定义了一组内置类型对象之间的标准转换,在必要时它们可以被编译器隐式地应用到对象上。
从较短类型转换为较宽类型称为提升,反之,一般称为截取。
混合类型的算术表达式
最宽的数据类型成为目标转换类型。
int ival = 3;
double dval = 3.8;
ival + dval; // ival被提升为double类型, 为3.0
赋值表达式:用一种类型的表达式赋值给另一个类型的对象
被赋值对象的类型成为目标转换类型。
int *pi = 0; // 情况1, 字面常量0的类型是int,在这里被转换成int* 类型的指针,表示空地址
ival = dval; //情况2, dval被转换成ival的类型,即被截取为int值 3
函数传递,调用表达式(实参)的类型与形参的类型不相同
形式参数的类型是目标转换类型
double sqrt(double);
cout << "The square root of 2 is " << sqrt(2) << endl; // int类型的2被提升为形参类型double,为2.0
函数返回类型,从一个函数返回一个表达式的类型与返回类型不相同
目标转换类型为函数类型,即返回表达式的类型自动转换为函数类型。
double diff( int ival1, int ival2 )
{
return ival1 - ival2; //返回表达式的类型被提升为double类型
}
算术运算保证了二元操作符,如加法和乘法的两个操作数被提升为共同的类型,再用它表示结果的类型。一般而言,为防止精度损失,类型总是被提升为较宽的类型(long double > double > float)。并且,所有含有小于整型(int)的有序类型(比如char, signed char, unsigned char, short int)的算术表达式在计算之前都会被转换成整型。
以上是脚本宝典为你收集整理的C++ 隐式类型转换全部内容,希望文章能够帮你解决C++ 隐式类型转换所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。