Conversioni aritmetiche
Molti operatori binari (illustrati in espressioni con gli operatori binari) le conversioni della causa degli operandi e delle prestazioni risultano la stessa modalità.La modalità queste conversioni della causa degli operatori è denominata “conversioni aritmetiche normali.„ Le conversioni aritmetiche degli operandi dei tipi nativi diversi vengono eseguite come illustrato nella tabella seguente.I tipi typedef si comportano come i tipi nativi sottostanti.
Condizioni per la conversione di tipi
Condizioni soddisfatte |
Conversion |
---|---|
Uno degli operandi è di tipo tempo doppio. |
L'altro operando viene convertito nel tipo tempo doppio. |
La condizione precedente non riempita e uno degli operandi è di tipo doppio. |
L'altro operando viene convertito nel tipo doppio. |
Far precedere condizioni non soddisfatta e uno degli operandi è di tipo float. |
L'altro operando viene convertito nel tipo float. |
Condizioni precedenti non soddisfatte (nessuno degli operandi siano dei tipi di mobile). |
Le promozioni integrali vengono eseguite su operandi come segue:
|
Il codice seguente sono illustrate le regole di conversione descritte nella tabella:
// 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;
}
La prima istruzione nell'esempio precedente viene illustrata una moltiplicazione di due tipi integrali, iVal e ulVal.La condizione soddisfatta rappresenta che nessuna delle due operandi di tipo mobile e uno degli operandi è di tipo unsigned int.di conseguenza, l'altro operando, iVal, viene convertito nel tipo unsigned int.il risultato è assegnato a dVal.La condizione soddisfatta rappresenta che uno degli operandi è di tipo doppio; pertanto, unsigned int il risultato della moltiplicazione viene convertito nel tipo doppio.
La seconda istruzione nell'esempio precedente viene illustrata l'aggiunta di una classe float e un tipo integrale, fVal e ulVal.ulVal la variabile viene convertito nel tipo float (terzo termine della tabella).Il risultato dell'addizione viene convertito nel tipo doppio (secondo termine della tabella) e assegnato a dVal.