Udostępnij przez


Konwersje z niepodpisanych typów całkowitych

Jeśli niepodpisane liczby całkowite są konwertowane na liczbę całkowitą lub zmiennoprzecinkową, jeśli oryginalna wartość jest reprezentowana w typie wyniku, wartość jest niezmieniona.

Gdy kompilator konwertuje niepodpisaną liczbę całkowitą na liczbę całkowitą o większym rozmiarze, wartość jest równa zero-extended. Po przekonwertowaniu na liczbę całkowitą o mniejszym rozmiarze bity o wysokiej kolejności są obcinane. Wynik jest interpretowany przy użyciu typu wyniku, jak pokazano w tym przykładzie:

unsigned k = 65533;
short j;

j = k;
printf_s( "%hd\n", j );   // Prints -3

Gdy kompilator konwertuje niepodpisaną liczbę całkowitą na typ zmiennoprzecinkowa, jeśli oryginalna wartość nie jest reprezentowana dokładnie w typie wyniku, wynik jest następnym wyższym lub niższym godnym reprezentowania wartością.

Zobacz Magazyn podstawowych typów , aby uzyskać informacje o rozmiarach typów całkowitych i zmiennoprzecinkowych.

Specyficzne dla firmy Microsoft

W kompilatorze firmy Microsoft (lub unsigned) i unsigned int są odrębnymi, unsigned long ale równoważnymi typami. unsigned int Konwersja wartości jest kontynuowana w taki sam sposób, jak konwersja elementu unsigned long.

Koniec specyfiki Microsoftu

W poniższej tabeli podsumowano konwersje z niepodpisanych typów całkowitych.

Tabela konwersji z niepodpisanych typów całkowitych

Źródło Działanie Method
unsigned char char Zachowaj wzorzec bitowy; bit o wysokiej kolejności staje się bitem znaku
unsigned char short Rozszerzenie zerowe
unsigned char long Rozszerzenie zerowe
unsigned char long long Rozszerzenie zerowe
unsigned char unsigned short Rozszerzenie zerowe
unsigned char unsigned long Rozszerzenie zerowe
unsigned char unsigned long long Rozszerzenie zerowe
unsigned char float Konwertuj dokładnie na float
unsigned char double Konwertuj dokładnie na double
unsigned char long double Konwertuj dokładnie na long double
unsigned short char Zachowaj bajt o niskiej kolejności
unsigned short short Zachowaj wzorzec bitowy; bit o wysokiej kolejności staje się bitem znaku
unsigned short long Rozszerzenie zerowe
unsigned short long long Rozszerzenie zerowe
unsigned short unsigned char Zachowaj bajt o niskiej kolejności
unsigned short unsigned long Rozszerzenie zerowe
unsigned short unsigned long long Rozszerzenie zerowe
unsigned short float Konwertuj dokładnie na float
unsigned short double Konwertuj dokładnie na double
unsigned short long double Konwertuj dokładnie na long double
unsigned long char Zachowaj bajt o niskiej kolejności
unsigned long short Zachowaj wyraz o niskiej kolejności
unsigned long long Zachowaj wzorzec bitowy; bit o wysokiej kolejności staje się bitem znaku
unsigned long long long Rozszerzenie zerowe
unsigned long unsigned char Zachowaj bajt o niskiej kolejności
unsigned long unsigned short Zachowaj wyraz o niskiej kolejności
unsigned long unsigned long long Rozszerzenie zerowe
unsigned long float Przekonwertuj na najbliższą reprezentację float
unsigned long double Konwertuj dokładnie na double
unsigned long long double Konwertuj dokładnie na long double
unsigned long long char Zachowaj bajt o niskiej kolejności
unsigned long long short Zachowaj wyraz o niskiej kolejności
unsigned long long long Zachowaj dword o niskim porządku
unsigned long long long long Zachowaj wzorzec bitowy; bit o wysokiej kolejności staje się bitem znaku
unsigned long long unsigned char Zachowaj bajt o niskiej kolejności
unsigned long long unsigned short Zachowaj wyraz o niskiej kolejności
unsigned long long unsigned long Zachowaj dword o niskim porządku
unsigned long long float Przekonwertuj na najbliższą reprezentację float
unsigned long long double Przekonwertuj na najbliższą reprezentację double
unsigned long long long double Przekonwertuj na najbliższą reprezentację long double

Zobacz też

Konwersje przydziałów