Freigeben über


Arithmetische Konvertierungen

Viele binären Operatoren (in Ausdrücke mit binären Operatoren) führen Konvertierungen von Operanden und Ertrag die gleiche Weise entsteht.Die ursachen diese Methode aufgerufen wird konvertierungen Operator „übliche arithmetische Konvertierungen“. Arithmetische Konvertierungen von Operanden unterschiedlicher systemeigenen Typen werden entsprechend der Darstellung in der folgenden Tabelle ausgeführt.Typedef-Typen verhalten sich entsprechend ihren zugrunde liegenden systemeigenen Typen.

Bedingungen für die Typkonvertierung

Bedingungen erfüllt

Conversion

Jeder Operand ist vom Typ long double.

Anderer Operand umgewandelt wird, um long doubleeinzugeben.

Die vorangehende nicht getroffene Zustand und jeder Operand ist vom Typ double.

Anderer Operand umgewandelt wird, um doubleeinzugeben.

Die vorangehenden nicht getroffenen Bedingungen und jeder Operand ist vom Typ float.

Anderer Operand wird dem Typ float konvertiert.

Der vorausgehende Bedingungen nicht erfüllt (keiner der Operanden in den Typ float).

Ganzzahlige Erweiterungen werden auf den Operanden ausgeführt wie folgt:

  • Wenn einer der beiden Operanden vom Typ unsigned longaufweist, wird der andere Operand umgewandelt, um unsigned longeinzugeben.

  • Wenn keine vorherige werden die getroffene Zustand und wenn einer der beiden Operanden vom Typ long und die andere vom Typ unsigned intist, beide Operanden konvertiert, um unsigned longeinzugeben.

  • Wenn die vorherigen zwei Bedingungen nicht erfüllt sind, und wenn einer der beiden Operanden vom Typ longaufweist, wird der andere Operand umgewandelt, um longeinzugeben.

  • Wenn die vorhergehenden drei Bedingungen nicht erfüllt sind, und wenn einer der beiden Operanden vom Typ unsigned intaufweist, wird der andere Operand umgewandelt, um unsigned inteinzugeben.

  • Wenn keine der vorherigen Bedingungen erfüllt sind, werden beide Operanden konvertiert, um inteinzugeben.

Der folgende Code veranschaulicht die Konvertierungsregeln in der Tabelle beschrieben werden:

// 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;
}

Die erste Anweisung im obigen Beispiel wird Multiplikation zweier ganzzahligen Typen, iVal und ulValan.Die getroffene Bedingung besteht darin, dass keiner der Operanden vom Typ float und ein Operand den Typ unsigned intist.Daher wird der andere Operand, iVal, konvertiert, um unsigned inteinzugeben.dValdas Ergebnis wird, zugewiesen.Die getroffene Bedingung besteht darin, dass ein Operand den Typ doubleist. Daher wird das unsigned int Ergebnis der Multiplikation konvertiert, um doubleeinzugeben.

Die zweite Anweisung im obigen Beispiel wird der Einführung von float und fVal ganzzahligen Typ und ulValan.Die ulVal-Variable wird auf den Typ float konvertiert (dritte Bedingung in der Tabelle).Das Ergebnis der Addition wird konvertiert, um double (second) Bedingungen in der Tabelle zugewiesen und dVal.

Siehe auch

Referenz

Standardkonvertierungen