读C++标准系列 - 5.6~5.15 双目运算符(算术运算)

本文详细介绍了C++中双目运算符的类型提升规则,包括浮点数和整数的运算以及类型转换。讨论了乘法、除法、取余、加减、位移等运算的特性和潜在问题,如除法优化、浮点数比较、移位操作的不确定性,并提到了短路逻辑运算符的副作用。
摘要由CSDN通过智能技术生成
返回目录

首先,双目运算符在运算之前,会对操作数进行类型提升,以使两者的类型相同。同时,该类型也将会是最后结果的类型(5-10)
1、如果任何一个操作数是long double、double或者float,那么两者都会提升到该类型
2、否则,会对操作数进行integral promotion,在此之后
3、如果两者都是有符号或者无符号,以rank大的类型为准。否则
4、如果无符号类型的rank大于等于有符号类型,则以无符号类型为准。否则
5、如果有符号类型能表达无符号类型所有的数值,则以有符号类型为准。否则
6、转换成该有符号类型对应的无符号类型
例如:

struct Dummy {};
void Fun(const Dummy &);

int main()
{
    Fun(10.0l+10.0); //1
    Fun(10.0+10.0f); //1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值