Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 |