Freigeben über


Ganzzahlige Erweiterungen

Objekte eines ganzzahligen Typs können in einen anderen größeren ganzzahligen Typ (d. h. einen Typ, der einen größeren Satz von Werten darstellen kann) konvertiert werden. Dieser Typ der Erweiterungskonvertierung wird als "ganzzahlige Erweiterung" bezeichnet. Mit der ganzzahligen Erweiterung können Sie immer dann Folgendes in einem Ausdruck verwenden, wenn ein anderer ganzzahliger Typ verwendet werden kann:

  • Objekte, Literale und Konstanten des Typs char und short int

  • Enumerationstypen

  • int-Bitfelder

  • Enumeratoren

C++-Erweiterungen sind "wertneutral". Das heißt, es ist gewährleistet, dass der Wert nach der Erweiterung derselbe ist wie der Wert vor der Erweiterung. In wertneutralen Erweiterungen werden Objekte kürzerer ganzzahliger Typen (wie Bitfelder oder Objekte des Typs char) auf den Typ int erweitert, wenn int den vollen Bereich des ursprünglichen Typs darstellen kann. Wenn int nicht den vollen Bereich von Werten darstellen kann, wird das Objekt auf den Typ unsigned int erweitert. Obwohl diese Strategie dieselbe ist, wie die von ANSI C verwendete, behalten wertneutrale Konvertierungen nicht die Vorzeichenneutralität des Objekts bei.

Wertneutrale Erweiterungen und vorzeichenneutrale Erweiterungen erzeugen normalerweise dieselben Ergebnisse. Allerdings können sie zu unterschiedlichen Ergebnissen führen, wenn das erweiterte Objekt eines der folgenden ist:

  • Ein Operand von /, %, /=, %=, <, <=, > oder >=

    Diese Operatoren benötigen Vorzeichen zum Bestimmen des Ergebnisses. Daher ergeben wert- und vorzeichenneutrale Erweiterungen andere Ergebnisse, wenn sie auf diese Operanden angewendet werden.

  • Der linke Operand von >> oder >>=

    Diese Operatoren behandeln Mengen mit Vorzeichen und Mengen ohne Vorzeichen unterschiedlich, wenn eine Verschiebeoperation ausgeführt wird. Für Mengen mit Vorzeichen wird das Vorzeichenbit beim Verschieben einer Menge nach rechts in die frei werdenden Bitpositionen übertragen. Bei Mengen ohne Vorzeichen werden die frei werdenden Bitpositionen mit Nullen gefüllt.

  • Ein Argument zu einer überladenen Funktion oder zum Operand eines überladenen Operators, das vom Vorzeichen des Typs des Operanden für die Argumentübereinstimmung abhängt. (Weitere Informationen über das Definieren überladener Operatoren finden Sie unter Überladen von Operatoren.)

Siehe auch

Referenz

Standardkonvertierungen