Konvertierungen von den ganzzahligen Typen ohne Vorzeichen
Eine ganze Zahl ohne Vorzeichen zu einer kürzeren oder Zahl ohne Vorzeichen mit Vorzeichen, indem die höherwertigen Bits abgeschnitten wird, oder eine längere oder Zahl ohne Vorzeichen mit Vorzeichen konvertiert, indem erweitert wird (siehe Konvertierungen von Ganzzahltypen ohne Vorzeichen Tabelle).
Wenn der Wert mit ganzzahligem Typ in eine ganze Zahl mit Vorzeichen mit kleinerem getieferstuft oder eine ganze Zahl ohne Vorzeichen in die entsprechende gesignierten Zahl konvertiert wird, ist der Wert unverändert, wenn er im neuen Typ dargestellt werden kann.Wenn der Wert stellt Änderungen, wenn das Vorzeichenbit gesetzt ist, wie im folgenden Beispiel gezeigt.
int j;
unsigned short k = 65533;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Wenn es nicht dargestellt werden kann, wird das Ergebnis Implementierung-definiert.Weitere Informationen finden Sie unter Typumwandlungs-Konvertierungen Informationen über die Behandlung des C-Compilers Microsoft Degradierung von ganzen Zahlen.Das gleiche Verhalten ergibt sich aus der ganzzahligen Konvertierung oder der Typumwandlung die ganze Zahl.
Werte ohne Vorzeichen werden so konvertiert, deren Wert beibehalten und nicht direkt in C darstellbar.Die einzige Ausnahme ist eine Konvertierung von unsigned long zu floatniedrigstwertigen Bits, die maximal die verloren gehen.Andernfalls wird der Wert beibehalten, mit oder ohne Vorzeichen.Wenn ein Wert des ganzzahligen Typs in den Schwimmen konvertiert wird und der Wert außerhalb des darstellbaren Bereichs ist, ist das Ergebnis nicht definiert.(Siehe Speicherung von einfachen Typen nach Informationen über den Bereich für ganzzahlige Typen und Gleitkommatypen.)
In der folgenden Tabelle werden die Konvertierungen von Ganzzahltypen ohne Vorzeichen zusammen.
Konvertierungen von Ganzzahltypen ohne Vorzeichen
Von |
To |
Methode |
---|---|---|
unsigned char |
char |
preserve bitmuster. Vorzeichenbit wird mit dem höchstwertigen Bits |
unsigned char |
short |
Erweitern |
unsigned char |
long |
Erweitern |
unsigned char |
unsigned short |
Erweitern |
unsigned char |
unsigned long |
Erweitern |
unsigned char |
float |
Konvertieren zu long. Konvertieren long zu float |
unsigned char |
double |
Konvertieren zu long. Konvertieren long zu double |
unsigned char |
long double |
Konvertieren zu long. Konvertieren long zu double |
unsigned short |
char |
preserve niedrigstwertiges byte |
unsigned short |
short |
preserve bitmuster. Vorzeichenbit wird mit dem höchstwertigen Bits |
unsigned short |
long |
Erweitern |
unsigned short |
unsigned char |
preserve niedrigstwertiges byte |
unsigned short |
unsigned long |
Erweitern |
unsigned short |
float |
Konvertieren zu long. Konvertieren long zu float |
unsigned short |
double |
Konvertieren zu long. Konvertieren long zu double |
unsigned short |
long double |
Konvertieren zu long. Konvertieren long zu double |
unsigned long |
char |
preserve niedrigstwertiges byte |
unsigned long |
short |
preserve niederwertiges wort |
unsigned long |
long |
preserve bitmuster. Vorzeichenbit wird mit dem höchstwertigen Bits |
unsigned long |
unsigned char |
preserve niedrigstwertiges byte |
unsigned long |
unsigned short |
preserve niederwertiges wort |
unsigned long |
float |
Konvertieren zu long. Konvertieren long zu float |
unsigned long |
double |
Konvertieren direkt zu double |
unsigned long |
long double |
Konvertieren zu long. Konvertieren long zu double |
Microsoft-spezifisch
Eine 32-Bit- C# Compiler den Typ unsigned int ist der Microsoft unsigned long-Typ.Konvertierung eines unsigned int-Wert wird auf die gleiche Weise wie Konvertierung von unsigned longfort.Konvertierungen von unsigned long-Werten zu float sind nicht genau, wenn der Wert konvertiert wird, long positive größer als der maximale Wert mit Vorzeichen.
Microsoft ENDES bestimmten