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.
Gdy podpisana liczba całkowita jest konwertowana na liczbę całkowitą lub typ zmiennoprzecinkowa, wartość jest niezmieniona, jeśli jest reprezentowana w typie wyniku.
Gdy podpisana liczba całkowita jest konwertowana na liczbę całkowitą o większym rozmiarze, wartość jest rozszerzona o znak. 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:
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Gdy kompilator konwertuje podpisaną 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 reprezentującym wartością.
Aby uzyskać informacje o rozmiarach typów całkowitych i zmiennoprzecinkowych, zobacz Magazyn typów podstawowych.
W poniższej tabeli podsumowano konwersje z podpisanych typów całkowitych. Zakłada się, char że typ jest domyślnie podpisany. Jeśli używasz opcji czasu kompilacji, aby zmienić wartość domyślną dla char typu na niepodpisany, konwersje podane w tabeli Konwersje z niepodpisanych typów całkowitych dla unsigned char typu mają zastosowanie, zamiast konwersji w tej tabeli.
Specyficzne dla firmy Microsoft
W kompilatorze firmy Microsoft i int są odrębnymi, long ale równoważnymi typami.
int Konwersja wartości jest kontynuowana w taki sam sposób jak konwersja elementu long.
Koniec specyfiki Microsoftu
Tabela konwersji z podpisanych typów całkowitych
| Źródło | Działanie | Method |
|---|---|---|
char
1 |
short |
Rozszerzanie znaku |
char |
long |
Rozszerzanie znaku |
char |
long long |
Rozszerzanie znaku |
char |
unsigned char |
Zachowaj wzorzec; bit o wysokiej kolejności traci funkcję jako bit znaku |
char |
unsigned short |
Rozszerzenie znaku na short; konwertowanie short na unsigned short |
char |
unsigned long |
Rozszerzenie znaku na long; konwertowanie long na unsigned long |
char |
unsigned long long |
Rozszerzenie znaku na long long; konwertowanie long long na unsigned long long |
char |
float |
Reprezentacja dokładnie tak jak float |
char |
double |
Reprezentacja dokładnie tak jak double |
char |
long double |
Reprezentacja dokładnie tak jak long double |
short |
char |
Zachowaj bajt o niskiej kolejności |
short |
long |
Rozszerzanie znaku |
short |
long long |
Rozszerzanie znaku |
short |
unsigned char |
Zachowaj bajt o niskiej kolejności |
short |
unsigned short |
Zachowaj wzorzec bitowy; bit o wysokiej kolejności traci funkcję jako bit znaku |
short |
unsigned long |
Rozszerzenie znaku na long; konwertowanie long na unsigned long |
short |
unsigned long long |
Rozszerzenie znaku na long long; konwertowanie long long na unsigned long long |
short |
float |
Reprezentacja dokładnie tak jak float |
short |
double |
Reprezentacja dokładnie tak jak double |
short |
long double |
Reprezentacja dokładnie tak jak long double |
long |
char |
Zachowaj bajt o niskiej kolejności |
long |
short |
Zachowaj wyraz o niskiej kolejności |
long |
long long |
Rozszerzanie znaku |
long |
unsigned char |
Zachowaj bajt o niskiej kolejności |
long |
unsigned short |
Zachowaj wyraz o niskiej kolejności |
long |
unsigned long |
Zachowaj wzorzec bitowy; bit o wysokiej kolejności traci funkcję jako bit znaku |
long |
unsigned long long |
Rozszerzenie znaku na long long; konwertowanie long long na unsigned long long |
long |
float |
Reprezentuje jako float. Jeśli long nie można dokładnie przedstawić, utracono pewną precyzję. |
long |
double |
Reprezentacja dokładnie tak jak double |
long |
long double |
Reprezentacja dokładnie tak jak long double |
long long |
char |
Zachowaj bajt o niskiej kolejności |
long long |
short |
Zachowaj wyraz o niskiej kolejności |
long long |
long |
Zachowaj dword o niskim porządku |
long long |
unsigned char |
Zachowaj bajt o niskiej kolejności |
long long |
unsigned short |
Zachowaj wyraz o niskiej kolejności |
long long |
unsigned long |
Zachowaj dword o niskim porządku |
long long |
unsigned long long |
Zachowaj wzorzec bitowy; bit o wysokiej kolejności traci funkcję jako bit znaku |
long long |
float |
Reprezentuje jako float. Jeśli long long nie można dokładnie przedstawić, utracono pewną precyzję. |
long long |
double |
Reprezentuje jako double. Jeśli long long nie można przedstawić dokładnie jako , utracono pewną precyzję double. |
long long |
long double |
Reprezentuje jako double. Jeśli long long nie można przedstawić dokładnie jako , utracono pewną precyzję double. |
1 Wszystkie char wpisy zakładają, że char typ jest domyślnie podpisany.