算术转换
许多二元运算符 (讨论在 与二元运算符的表达式) 会导致操作数和 yield 发生转换方法相同。这种这些运算符原因将名为 “通常算术转换”。如下表所示,不同的本机类型的操作数算术转换执行。Typedef 类型是基于其基础的本机类型的行为。
类型转换的条件
匹配的情况 |
转换 |
---|---|
其中一个操作数是类型 long 二进制文件。 |
将其他操作数类型 long 二进制文件。 |
上述情况不匹配的和其中一个操作数是类型 二进制文件。 |
将其他操作数类型 二进制文件。 |
上述情况不匹配的和其中一个操作数是类型 float。 |
将其他操作数类型 float。 |
未满足上述情况 (操作数都不是浮点的类型)。 |
整数提升在操作数执行如下所示:
|
下面的代码阐释在表中描述的转换规则:
// arithmetic_conversions.cpp
double dVal;
float fVal;
int iVal;
unsigned long ulVal;
int main() {
// iVal converted to unsigned long
// result of multiplication converted to double
dVal = iVal * ulVal;
// ulVal converted to float
// result of addition converted to double
dVal = ulVal + fVal;
}
前面示例中的第一个语句演示两个整型、 iVal 和 ulVal的乘法。满足的条件为两个操作数不是浮点的类型,并且一个操作数是类型 unsigned int。因此,转换,另一个操作数, iVal键入 unsigned int。该结果分配给 dVal。满足的条件是一个操作数是类型 二进制文件;因此,转换相乘的 unsigned int 结果键入 二进制文件。
前面示例中的第二个语句演示 float 和一个整型添加, fVal 和 ulVal。转换 ulVal 变量键入 float (第三个条件在表中)。转换添加的结果键入 二进制文件 (第二个条件在表中) 并将其分配给 dVal。