C++中的隐式类型转换(《C++ Primer 第5版》P141)

算术类型之间的隐式转换被设计得尽可能避免损失精度。

何时发生隐式类型转换
在下面这些情况下,编译器会自动地转换运算对象类型:

  • 在大多数表达式中,比int小的整型值首先提升为较大的整数类型
  • 在条件中,非布尔值转换成布尔类型
  • 初始化过程中,初始值转换成变量的类型;在赋值语句中,右侧运算对象转换成左侧运算对象的类型
  • 如果算术运算或关系运算的运算对象有多种类型,需要转换成同一种类型
  • 函数调用时也会发生类型转换

算术转换(arithmetic conversion)规则:运算符的运算对象将转换成最宽的类型。
整型提升:把小整数类型转换成较大的整数类型。其中布尔值false提升为0true提升为1
无符号类型的运算对象:如果一个运算对象类型是无符号类型,另一个是带符号类型,而且其中的无符号类型不小于带符号类型,那么带符号的运算对象转换成无符号的;如果无符号类型小于带符号类型,此时转换结果依赖于机器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值