Konwersje arytmetyczny
Wielu operatorów binarnych (omówione w wyrażeń z operatorami binarne) powodują konwersji operandy i dają wyniki w taki sam sposób.Sposób, w jaki te podmioty gospodarcze powodują konwersji nazywa się "zwykłe konwersje arytmetycznych." Arytmetyczne konwersje operandów różnych typów macierzystym są wykonywane jak pokazano w poniższej tabeli.Element TypeDef typów zachowywały się zgodnie z ich podstawowych typów macierzystym.
Warunki dotyczące konwersji typu
Spełnione warunki |
Konwersja |
---|---|
Albo operand jest typu longdouble. |
Inne operand jest konwertowany na wpisz longdouble. |
Poprzedzające warunek nie jest spełniony i albo operand jest typu double. |
Inne operand jest konwertowany na wpisz double. |
Poprzedzające niespełnione warunki oraz albo operand jest typu pływaka. |
Inne operand jest konwertowany na wpisz pływaka. |
Poprzedzającego nie są spełnione warunki (Brak operandy są przestawne typów). |
Promocje integralną są wykonywane na operandy w następujący sposób:
|
Poniższy kod ilustruje reguły konwersji, opisane w tabeli:
// 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;
}
Pierwsza instrukcja w poprzednim przykładzie pokazuje mnożenia dwa typy integralną, iVal i ulVal.Warunek, spełnione jest, że ani operand jest typu przestawne i jeden operand jest typu unsigned int.W związku z tym, drugiego operandu, iVal, jest konwertowany na wpisz unsigned int.Wynik jest przypisany do dVal.Warunek spełniony jest, że jeden operand jest typu double; w związku z tym unsigned int wynik mnożenia jest konwertowany na wpisz double.
Druga instrukcja w poprzednim przykładzie pokazuje dodanie pływaka i typem całkowitym fVal i ulVal.ulVal Zmienna jest konwertowany na wpisz pływaka (trzeci warunek w tabeli).Wynik dodawania jest konwertowany na wpisz double (drugi warunek w tabeli) i przypisany do dVal.