Konvertierungen von integralen Typen ohne Vorzeichen
Wenn eine ganze Zahl ohne Vorzeichen in einen Integer- oder einen Gleitkommatyp konvertiert wird, bleibt der Wert unverändert, falls der ursprüngliche Wert im Ergebnistyp darstellbar ist.
Wenn der Compiler eine ganze Zahl ohne Vorzeichen in eine größere ganze Zahl konvertiert, wird der Wert mit 0 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:
unsigned k = 65533;
short j;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Wenn der Compiler eine ganze Zahl ohne 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.
Microsoft-spezifisch
Im Microsoft-Compiler sind die Werte unsigned
(oder unsigned int
) und unsigned long
eindeutige aber äquivalente Typen. Die Konvertierung eines unsigned int
-Werts wird auf dieselbe Weise wie die Konvertierung eines unsigned long
-Werts ausgeführt.
Ende Microsoft-spezifisch
In der folgenden Tabelle werden die Konvertierungen von ganzzahligen Typen ohne Vorzeichen zusammengefasst.
Tabelle mit Konvertierungen von integralen Typen ohne Vorzeichen
Von | Beschreibung | Methode |
---|---|---|
unsigned char |
char |
Bitmuster wird beibehalten; oberes Bit wird Vorzeichenbit |
unsigned char |
short |
Nullerweiterung |
unsigned char |
long |
Nullerweiterung |
unsigned char |
long long |
Nullerweiterung |
unsigned char |
unsigned short |
Nullerweiterung |
unsigned char |
unsigned long |
Nullerweiterung |
unsigned char |
unsigned long long |
Nullerweiterung |
unsigned char |
float |
Genaue Konvertierung in float |
unsigned char |
double |
Genaue Konvertierung in double |
unsigned char |
long double |
Genaue Konvertierung in long double |
unsigned short |
char |
Niederwertiges Byte beibehalten |
unsigned short |
short |
Bitmuster wird beibehalten; oberes Bit wird Vorzeichenbit |
unsigned short |
long |
Nullerweiterung |
unsigned short |
long long |
Nullerweiterung |
unsigned short |
unsigned char |
Niederwertiges Byte beibehalten |
unsigned short |
unsigned long |
Nullerweiterung |
unsigned short |
unsigned long long |
Nullerweiterung |
unsigned short |
float |
Genaue Konvertierung in float |
unsigned short |
double |
Genaue Konvertierung in double |
unsigned short |
long double |
Genaue Konvertierung in long double |
unsigned long |
char |
Niederwertiges Byte beibehalten |
unsigned long |
short |
Niederwertiges Wort beibehalten |
unsigned long |
long |
Bitmuster wird beibehalten; oberes Bit wird Vorzeichenbit |
unsigned long |
long long |
Nullerweiterung |
unsigned long |
unsigned char |
Niederwertiges Byte beibehalten |
unsigned long |
unsigned short |
Niederwertiges Wort beibehalten |
unsigned long |
unsigned long long |
Nullerweiterung |
unsigned long |
float |
Konvertierung in nächstmöglichen darstellbaren float |
unsigned long |
double |
Genaue Konvertierung in double |
unsigned long |
long double |
Genaue Konvertierung in long double |
unsigned long long |
char |
Niederwertiges Byte beibehalten |
unsigned long long |
short |
Niederwertiges Wort beibehalten |
unsigned long long |
long |
Niederwertigen dword-Wert beibehalten |
unsigned long long |
long long |
Bitmuster wird beibehalten; oberes Bit wird Vorzeichenbit |
unsigned long long |
unsigned char |
Niederwertiges Byte beibehalten |
unsigned long long |
unsigned short |
Niederwertiges Wort beibehalten |
unsigned long long |
unsigned long |
Niederwertigen dword-Wert beibehalten |
unsigned long long |
float |
Konvertierung in nächstmöglichen darstellbaren float |
unsigned long long |
double |
Konvertierung in nächstmöglichen darstellbaren double |
unsigned long long |
long double |
Konvertierung in nächstmöglichen darstellbaren long double |