Freigeben über


Konvertierungen von ganzzahligen Typen mit Vorzeichen

Wenn eine ganze Zahl mit Vorzeichen in einen Integer- oder Gleitkommatyp konvertiert wird, bleibt der Wert unverändert, wenn er im Ergebnistyp darstellbar ist.

Wenn eine ganze Zahl mit Vorzeichen in eine größere ganze Zahl konvertiert wird, wird der Wert mit einem Vorzeichen erweitert. Wenn sie in eine kleinere ganze Zahl konvertiert wird, werden die höherwertigen Bits abgeschnitten. Das Ergebnis wird mithilfe des Ergebnistyps wie in diesem Beispiel gezeigt interpretiert:

int i = -3;
unsigned short u;

u = i;
printf_s( "%hu\n", u );  // Prints 65533

Wenn der Compiler eine ganze Zahl mit Vorzeichen in einen Gleitkommatyp konvertiert, ist das Ergebnis der nächsthöhere oder -niedrigere darstellbare Wert, falls der ursprüngliche Wert nicht genau im Ergebnistyp darstellbar ist.

Informationen über die Größen der Integer- und Gleitkommatypen finden Sie unter Speicherverwendung der grundlegenden Typen.

In der folgenden Tabelle sind die Konvertierungen von ganzzahligen Typen mit Vorzeichen zusammengefasst. Es wird davon ausgegangen, dass der Typ char standardmäßig ein Vorzeichen aufweist. Wenn Sie eine Kompilierzeitoption verwenden, um den Standardwert für den char-Typ in einen Typ ohne Vorzeichen zu ändern, gelten anstelle der Konvertierungen in dieser Tabelle die Konvertierungen aus der Tabelle Konvertierungen von integralen Typen ohne Vorzeichen für den Typ unsigned char.

Microsoft-spezifisch

Im Microsoft-Compiler sind int und long eindeutige aber äquivalente Typen. Die Konvertierung eines int -Werts wird auf dieselbe Weise wie die Konvertierung eines long -Werts ausgeführt.

Ende Microsoft-spezifisch

Tabelle mit Konvertierungen von integralen Typen mit Vorzeichen

Von Beschreibung Methode
char 1 short Signaturerweiterung
char long Signaturerweiterung
char long long Signaturerweiterung
char unsigned char Muster beibehalten; oberes Bit verliert Funktion als Vorzeichenbit
char unsigned short Vorzeichenerweiterung zu short ; Konvertieren von short zu unsigned short
char unsigned long Vorzeichenerweiterung zu long ; Konvertieren von long zu unsigned long
char unsigned long long Vorzeichenerweiterung zu long long ; Konvertieren von long long zu unsigned long long
char float Darstellung genau wie float
char double Darstellung genau wie double
char long double Darstellung genau wie long double
short char Niederwertiges Byte beibehalten
short long Signaturerweiterung
short long long Signaturerweiterung
short unsigned char Niederwertiges Byte beibehalten
short unsigned short Bitmuster beibehalten; höherwertiges Bit verliert Funktion als Vorzeichenbit
short unsigned long Vorzeichenerweiterung zu long ; Konvertieren von long zu unsigned long
short unsigned long long Vorzeichenerweiterung zu long long ; Konvertieren von long long zu unsigned long long
short float Darstellung genau wie float
short double Darstellung genau wie double
short long double Darstellung genau wie long double
long char Niederwertiges Byte beibehalten
long short Niederwertiges Wort beibehalten
long long long Signaturerweiterung
long unsigned char Niederwertiges Byte beibehalten
long unsigned short Niederwertiges Wort beibehalten
long unsigned long Bitmuster beibehalten; höherwertiges Bit verliert Funktion als Vorzeichenbit
long unsigned long long Vorzeichenerweiterung zu long long ; Konvertieren von long long zu unsigned long long
long float Darstellen als float . Wenn long nicht genau dargestellt werden kann, wirkt sich dies auf die Genauigkeit aus.
long double Darstellung genau wie double
long long double Darstellung genau wie long double
long long char Niederwertiges Byte beibehalten
long long short Niederwertiges Wort beibehalten
long long long Niederwertigen dword-Wert beibehalten
long long unsigned char Niederwertiges Byte beibehalten
long long unsigned short Niederwertiges Wort beibehalten
long long unsigned long Niederwertigen dword-Wert beibehalten
long long unsigned long long Bitmuster beibehalten; höherwertiges Bit verliert Funktion als Vorzeichenbit
long long float Darstellen als float . Wenn long long nicht genau dargestellt werden kann, wirkt sich dies auf die Genauigkeit aus.
long long double Darstellen als double . Wenn long long nicht genau als double dargestellt werden kann, wirkt sich dies auf die Genauigkeit aus.
long long long double Darstellen als double . Wenn long long nicht genau als double dargestellt werden kann, wirkt sich dies auf die Genauigkeit aus.

1 Bei allen char -Einträgen wird davon ausgegangen, dass der char -Typ standardmäßig ein Vorzeichen hat.

Siehe auch

Zuweisungskonvertierungen