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:

  • Se uno degli operandi è di tipo unsigned tempo, l'altro operando viene convertito nel tipo unsigned long.

  • Se condizione precedente non riempita e se uno degli operandi è di tipo tempo e l'altro di tipo unsigned int, entrambi gli operandi sono convertiti nel tipo unsigned long.

  • Se le due condizioni precedenti non vengono soddisfatte e se uno degli operandi è di tipo tempo, l'altro operando viene convertito nel tipo tempo.

  • Se le tre condizioni precedenti non vengono soddisfatte e se uno degli operandi è di tipo unsigned int, l'altro operando viene convertito nel tipo unsigned int.

  • Se nessuna delle condizioni precedenti vengono soddisfatte, entrambi gli operandi sono convertiti nel tipo int.

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.

Vedere anche

Riferimenti

Conversioni standard