Freigeben über


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

Siehe auch

Konzepte

Zuweisungskonvertierungen