Heim >Backend-Entwicklung >C++ >Wie bestimmen übliche arithmetische Konvertierungen den Ergebnistyp binärer Operatoren mit vorzeichenbehafteten und vorzeichenlosen Operanden?

Wie bestimmen übliche arithmetische Konvertierungen den Ergebnistyp binärer Operatoren mit vorzeichenbehafteten und vorzeichenlosen Operanden?

DDD
DDDOriginal
2024-12-01 18:15:12294Durchsuche

How Do Usual Arithmetic Conversions Determine the Result Type of Binary

Werberegeln für signierte und nicht signierte Binäroperatoren

Beachten Sie die folgenden Codeausschnitte:

// Snippet 1
int max = std::numeric_limits<int>::max();
unsigned int one = 1;
unsigned int result = max + one;
// Snippet 2
unsigned int us = 42;
int neg = -43;
int result = us + neg;

Wie bestimmt der Operator „ “ in diesen Fällen den richtigen Ergebnistyp angesichts der unterschiedlichen Vorzeichen von? Operanden?

Der Operator folgt der Regel „übliche arithmetische Konvertierungen“, die die Typkonvertierungsschritte basierend auf den Operandentypen vorschreibt. Wenn gemäß dieser Regel einer der Operanden ist:

  • Long Double, werden beide Operanden in Long Double konvertiert.
  • Double, beide Operanden werden in Double konvertiert.
  • float, beide Operanden werden in float konvertiert.
  • unsigned long, der andere Operand wird in unsigned konvertiert long.
  • long int und der andere Operand unsigned int, beide Operanden werden in unsigned long int konvertiert, wenn der Wert des unsigned int in einem long int dargestellt werden kann; andernfalls werden beide in long konvertiert.
  • long, der andere Operand wird in long.
  • unsigned konvertiert, der andere Operand wird in unsigned konvertiert.

Da int und unsigned int sind in der Regel austauschbar, als Ergebnis wird der Operand mit dem breiteren Typ (unsigned int) gewählt Typ.

Dies erklärt, warum in Snippet 1 das Ergebnis unsigned int (2147483648) und in Snippet 2 das Ergebnis int (-1) ist. Der vorzeichenbehaftete Operand (neg) wird implizit in ein vorzeichenloses int umgewandelt, was im letzteren Fall zu einem undefinierten Wert führt.

Das obige ist der detaillierte Inhalt vonWie bestimmen übliche arithmetische Konvertierungen den Ergebnistyp binärer Operatoren mit vorzeichenbehafteten und vorzeichenlosen Operanden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn