返回目录
首先,双目运算符在运算之前,会对操作数进行类型提升,以使两者的类型相同。同时,该类型也将会是最后结果的类型(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
首先,双目运算符在运算之前,会对操作数进行类型提升,以使两者的类型相同。同时,该类型也将会是最后结果的类型(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