Ganzzahlige Höherstufungen
Objekte eines ganzzahligen Typs in ein anderes Format konvertiert werden können größere ganzzahligen Typ (d. h. ein Typ, der einen größeren Satz von Werten darstellen kann.)Dieser erweiternde Konvertierung Typ der Erweiterung ganzzahlige „bezeichnet wird.“ Mit ganzzahliger Erweiterung können Sie wie folgt in einem Ausdruck verwenden, wo ein anderer ganzzahliger Typ verwendet werden kann:
Konstanten und Literale und Objekte des Typs char und short int
Enumerationstypen
int Bitfelder
Enumeratoren
C++-Höherstufungen „VALUE-behalten unter“. Das heißt, wird der Wert nach der Erweiterung gewährleistet, dass der gleiche wie der Wert vor der Erweiterung.In VALUE-beibehaltenden Erweiterungen werden Objekte aus kürzeren Integer-Typen (wie Bitfelder oder Objekten des Typs char) erweitert, um int einzugeben, wenn int den vollen Bereich des ursprünglichen Typs darstellen kann.Wenn int nicht den vollen Bereich von Werten darstellen kann, wird das Objekt erweitert, um unsigned inteinzugeben.Obwohl diese Strategie ist dieselbe wie die von ANSI C verwendete Konvertierungen VALUE-beibehaltend behalten Sie das „signedness“ des Objekts.
VALUE-beibehalten Erweiterungen und Erweiterungen, die signedness normalerweise Erzeugnis dieselben Ergebnisse erhalten.Allerdings können sie zu unterschiedlichen Ergebnissen führen, wenn das gehöherstufte Objekt einen der folgenden Schritte aus:
Ein Operand des /, %, /=, %=, <, <=, **>**oder >=
Diese Operatoren erstellen Zeichen zum Bestimmen des Ergebnisses.Daher VALUE-beibehaltend Erweiterungen und SIGN-beibehaltend stellen Sie unterschiedliche Ergebnisse angezeigt, wenn Sie auf diesen Operanden angewendet werden.
Der linke Operand des >> oder >>=
Signierte behandeln und Größen dieser Operatoren ohne Vorzeichen anders, wenn ein Schiebeoperation ausgeführt wird.Für Mengen mit Vorzeichen wird das Verschieben eines Mengen rechts das Vorzeichenbit, in die frei werdenden Bitpositionen übertragen werden.Für Mengen ohne Vorzeichen werden die frei werdenden Bitpositionen null-ausgefüllt.
Ein Argument zu einer überladenen Funktion oder einen Operanden eines überladenen Operators, der vom signedness vom Typ des Operanden für das Argument übereinstimmen abhängt.(Siehe Überladene Operatoren für weitere Informationen über das Definieren von überladenen Operators.)