Арифметические преобразования
Многие двоичных операторов (в рассматриваемых выражения с бинарными операторами) преобразования причины операндов и вывода приводят к одной и той же способом.Способ эти преобразования причины операторов называется "обычными арифметическими преобразованиями". Арифметические преобразования собственных типов операндов различных выполняются как показано в следующей таблице.Типы Typedef поведение в соответствии с их основным собственный тип.
Условия для преобразования типа
Соотвествованные условия |
Преобразование |
---|---|
Любой из операндов типа long Двойное с плавающей запятой. |
Другой операнд преобразован в тип long Двойное с плавающей запятой. |
Предшествующее не соотвествованное условие и любой из операндов типа Двойное с плавающей запятой. |
Другой операнд преобразован в тип Двойное с плавающей запятой. |
Предыдущие не соотвествованные условия и любой из операндов типа Плавающая область. |
Другой операнд преобразован в тип Плавающая область. |
Предыдущие не соотвествованные условия (ни один из операндов типов плавающей запятой). |
Объединенные promotion выполняются для операндов следующим образом:
|
Следующий код иллюстрирует правила преобразования, описанные в таблице:
// 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;
}
В первой выписку в предыдущем примере показаны умножение 2 целочисленных типов iVal и ulVal.Соотвествованное условие, что операнд не является типом плавающей запятой и один операнд типа unsigned int.Поэтому другой операнд, iVal, преобразование к типу unsigned int.Результат присвоенный dVal.Соотвествованное условие, что один операнд типа Двойное с плавающей запятой; следовательно, unsigned int результат умножения преобразован в тип Двойное с плавающей запятой.
На второй выписку в предыдущем примере показано добавление a Плавающая область и целочисленный тип, fVal и ulVal.ulVal переменная преобразована к типу Плавающая область (третье условие в таблице).Результат сложения преобразован в тип Двойное с плавающей запятой (второе условие в таблице) и присвоить dVal.