Konwersje z niepodpisanych typów całkowitychConversions from unsigned integral types
Gdy liczba całkowita bez znaku jest konwertowana na typ liczba całkowita lub zmiennoprzecinkowa, jeśli oryginalna wartość jest reprezentacja w typie wyniku, wartość nie jest zmieniana.When an unsigned integer is converted to an integer or floating-point type, if the original value is representable in the result type the value is unchanged.
Podczas konwertowania liczby całkowitej bez znaku na liczbę całkowitą o większym rozmiarze wartość jest zerowa-rozszerzona.When converting an unsigned integer to an integer of greater size, the value is zero-extended. Podczas konwertowania na liczbę całkowitą o mniejszym rozmiarze bity o wysokim stopniu są obcinane.When converting to an integer of smaller size, the high-order bits are truncated. Wynik jest interpretowany przy użyciu typu wyniku, jak pokazano w tym przykładzie.The result is interpreted using the result type, as shown in this example.
unsigned k = 65533;
short j;
j = k;
printf_s( "%hd\n", j ); // Prints -3
W przypadku konwertowania nieoznaczonej liczby całkowitej na typ zmiennoprzecinkowy, jeśli oryginalna wartość nie może być reprezentowana dokładnie w typie wyniku, wynik jest następną wyższą lub mniejszą reprezentacją wartości.When converting an unsigned integer to a floating-point type, if the original value can't be represented exactly in the result type, the result is the next higher or lower representable value.
Zobacz Magazyn typów podstawowych , aby uzyskać informacje o rozmiarach typów całkowitych i zmiennoprzecinkowych.See Storage of basic types for information about the sizes of integral and floating-point types.
Specyficzne dla firmy MicrosoftMicrosoft Specific
W kompilatorze firmy Microsoft unsigned
(lub unsigned int
) i unsigned long
są to różne, ale równoważne typy.In the Microsoft compiler, unsigned
(or unsigned int
) and unsigned long
are distinct but equivalent types. Konwersja unsigned int
wartości jest wykonywana w taki sam sposób jak w przypadku konwersji unsigned long
.Conversion of an unsigned int
value proceeds in the same way as conversion of an unsigned long
.
ZAKOŃCZENIE określonych przez firmę MicrosoftEND Microsoft Specific
Poniższa tabela zawiera podsumowanie konwersji z niepodpisanych typów całkowitych.The following table summarizes conversions from unsigned integral types.
Tabela konwersji z niepodpisanych typów całkowitychTable of conversions from unsigned integral types
ŹródłoFrom | DziałanieTo | MetodaMethod |
---|---|---|
unsigned char |
char |
Zachowaj wzorzec bitowy; bit z wysokim priorytetem jest bit znakuPreserve bit pattern; high-order bit becomes sign bit |
unsigned char |
short |
Zero — zwiększenieZero-extend |
unsigned char |
long |
Zero — zwiększenieZero-extend |
unsigned char |
long long |
Zero — zwiększenieZero-extend |
unsigned char |
unsigned short |
Zero — zwiększenieZero-extend |
unsigned char |
unsigned long |
Zero — zwiększenieZero-extend |
unsigned char |
unsigned long long |
Zero — zwiększenieZero-extend |
unsigned char |
float |
Konwertuj na long ; Konwertuj long na float Convert to long ; convert long to float |
unsigned char |
double |
Konwertuj na long ; Konwertuj long na double Convert to long ; convert long to double |
unsigned char |
long double |
Konwertuj na long ; Konwertuj long na double Convert to long ; convert long to double |
unsigned short |
char |
Zachowaj bajt o niskiej kolejnościPreserve low-order byte |
unsigned short |
short |
Zachowaj wzorzec bitowy; bit z wysokim priorytetem jest bit znakuPreserve bit pattern; high-order bit becomes sign bit |
unsigned short |
long |
Zero — zwiększenieZero-extend |
unsigned short |
long long |
Zero — zwiększenieZero-extend |
unsigned short |
unsigned char |
Zachowaj bajt o niskiej kolejnościPreserve low-order byte |
unsigned short |
unsigned long |
Zero — zwiększenieZero-extend |
unsigned short |
unsigned long long |
Zero — zwiększenieZero-extend |
unsigned short |
float |
Konwertuj na long ; Konwertuj long na float Convert to long ; convert long to float |
unsigned short |
double |
Konwertuj na long ; Konwertuj long na double Convert to long ; convert long to double |
unsigned short |
long double |
Konwertuj na long ; Konwertuj long na double Convert to long ; convert long to double |
unsigned long |
char |
Zachowaj bajt o niskiej kolejnościPreserve low-order byte |
unsigned long |
short |
Zachowaj wyraz o niskiej kolejnościPreserve low-order word |
unsigned long |
long |
Zachowaj wzorzec bitowy; bit z wysokim priorytetem jest bit znakuPreserve bit pattern; high-order bit becomes sign bit |
unsigned long |
long long |
Zero — zwiększenieZero-extend |
unsigned long |
unsigned char |
Zachowaj bajt o niskiej kolejnościPreserve low-order byte |
unsigned long |
unsigned short |
Zachowaj wyraz o niskiej kolejnościPreserve low-order word |
unsigned long |
unsigned long long |
Zero — zwiększenieZero-extend |
unsigned long |
float |
Konwertuj na long ; Konwertuj long na float Convert to long ; convert long to float |
unsigned long |
double |
Konwertuj bezpośrednio na double Convert directly to double |
unsigned long |
long double |
Konwertuj na long ; Konwertuj long na double Convert to long ; convert long to double |
unsigned long long |
char |
Zachowaj bajt o niskiej kolejnościPreserve low-order byte |
unsigned long long |
short |
Zachowaj wyraz o niskiej kolejnościPreserve low-order word |
unsigned long long |
long |
Zachowywanie wartości DWORD z niską kolejnościąPreserve low-order dword |
unsigned long long |
long long |
Zachowaj wzorzec bitowy; bit z wysokim priorytetem jest bit znakuPreserve bit pattern; high-order bit becomes sign bit |
unsigned long long |
unsigned char |
Zachowaj bajt o niskiej kolejnościPreserve low-order byte |
unsigned long long |
unsigned short |
Zachowaj wyraz o niskiej kolejnościPreserve low-order word |
unsigned long long |
unsigned long |
Zachowywanie wartości DWORD z niską kolejnościąPreserve low-order dword |
unsigned long long |
float |
Konwertuj na long ; Konwertuj long na float Convert to long ; convert long to float |
unsigned long long |
double |
Konwertuj bezpośrednio na double Convert directly to double |
unsigned long long |
long double |
Konwertuj na long ; Konwertuj long na double Convert to long ; convert long to double |