Konvertierungen ganzzahligen Typen von signierten
Wenn eine Zahl mit Vorzeichen in eine ganze Zahl ohne Vorzeichen mit gleichem konvertiert wird, oder eine größere Größe und der Wert der Zahl mit Vorzeichen nicht negativ ist, wird der Wert unverändert.Die Konvertierung erfolgt durch Aufruf der Zahl mit Vorzeichen SIGN-erweitert.Eine ganze Zahl mit Vorzeichen wird zu einer kürzeren Zahl mit Vorzeichen konvertiert, indem die höherwertigen Bits abgeschnitten wird.Das Ergebnis wird als Wert ohne Vorzeichen, wie in diesem Beispiel gezeigt interpretiert.
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Es werden keine Daten gehen verloren, wenn eine Ganzzahl mit Vorzeichen in einen Gleitkommawert konvertiert wird, außer dass einige Genauigkeit ist möglicherweise verloren, wenn ein long int oder unsigned long intfloat-Wert in einen Wert konvertiert wird.
In der folgenden Tabelle werden die Konvertierungen von Ganzzahltypen mit Vorzeichen zusammen.Diese Tabelle wird davon ausgegangen, dass der Typ char standardmäßig signiert ist.Wenn Sie eine Option zur Kompilierzeit verwenden, um den Standardwert für den char-Typ ohne Vorzeichen zu ändern, gelten die Konvertierungen, die in der Konvertierungen von Ganzzahltypen ohne Vorzeichen Tabelle für den angegebenen Typ unsigned char anstelle von Konvertierungen in der folgenden Tabelle Konvertierungen von Ganzzahltypen mit Vorzeichen zu.
Konvertierungen ganzzahligen Typen von signierten
Von |
To |
Methode |
---|---|---|
char1 |
short |
Erweitern |
char |
long |
Erweitern |
char |
unsigned char |
preserve Entwurfsmuster. Vorzeichenbit als Funktion mit dem höchstwertigen Bits verloren hat |
char |
unsigned short |
Erweitern shortsoll. konvertieren Sie short zu short ohne Vorzeichen |
char |
unsigned long |
Erweitern longsoll. konvertieren Sie long zu unsigned long |
char |
float |
Erweitern longsoll. konvertieren Sie long zu float |
char |
double |
Erweitern longsoll. konvertieren Sie long zu double |
char |
long double |
Erweitern longsoll. konvertieren Sie long zu double |
short |
char |
preserve niedrigstwertiges byte |
short |
long |
Erweitern |
short |
unsigned char |
preserve niedrigstwertiges byte |
short |
unsigned short |
preserve bitmuster. Vorzeichenbit als Funktion mit dem höchstwertigen Bits verloren hat |
short |
unsigned long |
Erweitern longsoll. konvertieren Sie long zu unsigned long |
short |
float |
Erweitern longsoll. konvertieren Sie long zu float |
short |
double |
Erweitern longsoll. konvertieren Sie long zu double |
short |
long double |
Erweitern longsoll. konvertieren Sie long zu double |
long |
char |
preserve niedrigstwertiges byte |
long |
short |
preserve niederwertiges wort |
long |
unsigned char |
preserve niedrigstwertiges byte |
long |
unsigned short |
preserve niederwertiges wort |
long |
unsigned long |
preserve bitmuster. Vorzeichenbit als Funktion mit dem höchstwertigen Bits verloren hat |
long |
float |
Geben Sie als floatdar.Wenn nicht genau long dargestellt werden kann, ist etwas Genauigkeit verloren. |
long |
double |
Geben Sie als doubledar.Wenn long nicht als doubleexakt dargestellt werden kann, ist etwas Genauigkeit verloren. |
long |
long double |
Geben Sie als doubledar.Wenn long nicht als doubleexakt dargestellt werden kann, ist etwas Genauigkeit verloren. |
1.Alle Einträge char davon ausgegangen, dass der Typ char standardmäßig signiert ist.
Microsoft-spezifisch
Eine 32-Bit- C# Compiler Microsoft ist eine ganze Zahl long.Konvertierung eines int-Werts verwendet dieselben wie für longfort.
BEENDEN Sie Microsoft-Besonderen