C++ 隐式类型转换

发布时间:2019-06-24 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了C++ 隐式类型转换脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

C++ 定义了一组内置类型对象之间的标准转换,在必要时它们可以被编译器隐式地应用到对象上。
从较短类型转换为较类型称为提升,反之,一般称为截取

  1. 混合类型的算表达式
    最宽的数据类型成为目标转换类型。

int ival = 3;
double dval = 3.8;
ival + dval;  // ival被提升为double类型, 为3.0
  1. 赋值表达式:用一种类型的表达式赋值给另一个类型的对象
    被赋值对象的类型成为目标转换类型。

int *pi = 0; // 情况1, 字面常量0的类型是int,在这里被转换成int* 类型的指针,表示空地址
ival = dval; //情况2, dval被转换成ival的类型,即被截取为int3
  1. 函数传递,调用表达式(实参)的类型与形参的类型不相同
    形式参数的类型是目标转换类型

double sqrt(double);
cout << "The square root of 2 is " << sqrt(2) << endl; // int类型的2被提升为形参类型double,为2.0
  1. 函数返回类型,从一个函数返回一个表达式的类型与返回类型不相同
    目标转换类型为函数类型,即返回表达式的类型自动转换为函数类型。

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,请注明来意。