隐式类型转换

隐式类型转换发生场景

  1. 在混合类型的算术表达式中

在这种情况下最宽的数据类型成为目标转换类型,这也被称为算术转换(Arithmetic Conversion)

	 int ival = 3;
     double dval = 3.14159;
   
     // ival被提升为double类型:3.0
     ival + dval;
  1. 用一种类型的表达式赋值给另一种类型的对象

在这种情况下目标转换类型是被赋值对象的类型。例如在下面第一个赋值中文字常量0的类型是int。它被转换成int*型的指针表示空地址。在第二个赋值中double型的值被截取成int型的值。

	// 0 被转换成int*类型的空指针值
     int *pi = 0;
     // dval 被截取为int 值3
     ival = dval;
  1. 把一个表达式传递给一个函数,调用表达式的类型与形式参数的类型不相同

在这种情况下目标转换类型是形式参数的类型。

	 extern double sqrt( double );
     // 2 被提升为double类型2.0
     cout << "The square root of 2 is "<< sqrt( 2 ) << endl;
  1. 从一个函数返回一个表达式的类型与返回类型不相同

在这种情况下返回的表达式类型自动转换成函数类型。

	 double difference( int ival1,
      int ival2 )
     {
         // 返回值被提升为double类型
         return ival1 - ival2;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值