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 floatConvert to long; convert long to float
unsigned char double Konwertuj na long ; Konwertuj long na doubleConvert to long; convert long to double
unsigned char long double Konwertuj na long ; Konwertuj long na doubleConvert 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 floatConvert to long; convert long to float
unsigned short double Konwertuj na long ; Konwertuj long na doubleConvert to long; convert long to double
unsigned short long double Konwertuj na long ; Konwertuj long na doubleConvert 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 floatConvert to long; convert long to float
unsigned long double Konwertuj bezpośrednio na doubleConvert directly to double
unsigned long long double Konwertuj na long ; Konwertuj long na doubleConvert 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 floatConvert to long; convert long to float
unsigned long long double Konwertuj bezpośrednio na doubleConvert directly to double
unsigned long long long double Konwertuj na long ; Konwertuj long na doubleConvert to long; convert long to double

Zobacz teżSee also

Konwersje przypisańAssignment conversions