Konwersje typów niepodpisanego Całka
Liczba całkowita bez znaku jest konwertowany krótszy całkowitą niepodpisany lub podpisany przez obcinanie znaczących bitów lub już niepodpisany lub podpisany całkowitą liczbą rozszerzając zera (zobacz Konwersje typów integralną niepodpisane tabeli).
Gdy wartość z typem całkowitym jest obniżany do liczba całkowita ze znakiem o mniejszym rozmiarze, lub liczba całkowita bez znaku jest konwertowana na jej odpowiednie liczba całkowita ze znakiem, wartość jest bez zmian, jeżeli mogą być reprezentowane w nowy typ.Jednakże wartość reprezentuje zmian, jeżeli jest ustawiony bit znaku, jak w poniższym przykładzie.
int j;
unsigned short k = 65533;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Jeśli nie można przedstawić, wynik jest zdefiniowane w implementacji.Zobacz Konwersje typu rzutowania informacji na temat obsługi kompilator Microsoft C obniżania liczb całkowitych.Tym samym zachowanie wyniki z liczby całkowitej konwersji lub typu Rzutowanie wartości całkowitej.
Niepodpisane wartości są konwertowane w sposób, który zachowuje ich wartość i nie jest ona reprezentować bezpośrednio w C.Jedynym wyjątkiem jest konwersja z unsigned long do pływaka, która traci co najwyżej niskie bity.W przeciwnym razie wartość jest zachowywany, podpisem lub bez.Gdy wartość integralną typu jest konwertowany na przestawny, a wartość jest spoza zakresu reprezentować, to wynik jest niezdefiniowany.(Zobacz Magazyn podstawowe typy dla informacje na temat zakresu typów integralną i zmiennoprzecinkowych.)
W następującej tabeli podsumowano konwersje typów integralną niepodpisane.
Konwersje typów niepodpisanego Całka
Od |
Do |
Metoda |
---|---|---|
unsigned char |
char |
Zachowaj wzorzec bitowy; bit znaczących staje się znakiem bit |
unsigned char |
krótkie |
Rozszerzenie zero |
unsigned char |
długie |
Rozszerzenie zero |
unsigned char |
krótki niepodpisane |
Rozszerzenie zero |
unsigned char |
unsigned long |
Rozszerzenie zero |
unsigned char |
Pływak |
Konwertuj na long; Konwertuj long do pływaka |
unsigned char |
podwójne |
Konwertuj na long; Konwertuj long do podwójne |
unsigned char |
long double |
Konwertuj na long; Konwertuj long do podwójne |
krótki niepodpisane |
char |
Zachowaj mniej znaczącym bajcie |
krótki niepodpisane |
krótkie |
Zachowaj wzorzec bitowy; bit znaczących staje się znakiem bit |
krótki niepodpisane |
długie |
Rozszerzenie zero |
krótki niepodpisane |
unsigned char |
Zachowaj mniej znaczącym bajcie |
krótki niepodpisane |
unsigned long |
Rozszerzenie zero |
krótki niepodpisane |
Pływak |
Konwertuj na long; Konwertuj long do pływaka |
krótki niepodpisane |
podwójne |
Konwertuj na long; Konwertuj long do podwójne |
krótki niepodpisane |
long double |
Konwertuj na long; Konwertuj long do podwójne |
unsigned long |
char |
Zachowaj mniej znaczącym bajcie |
unsigned long |
krótkie |
Zachowaj word low zamówienie |
unsigned long |
długie |
Zachowaj wzorzec bitowy; bit znaczących staje się znakiem bit |
unsigned long |
unsigned char |
Zachowaj mniej znaczącym bajcie |
unsigned long |
krótki niepodpisane |
Zachowaj word low zamówienie |
unsigned long |
Pływak |
Konwertuj na long; Konwertuj long do pływaka |
unsigned long |
podwójne |
Konwertuj bezpośrednio do podwójne |
unsigned long |
long double |
Konwertuj na long; Konwertuj long do podwójne |
Programu Microsoft
Dla Microsoft 32-bitowy kompilator C unsigned int typu jest równoważne z unsigned long typu.Konwersja z unsigned int wartość wpływy w taki sam sposób, jak konwersja z unsigned long.Konwersja z unsigned long wartości do pływaka nie są dokładne, jeśli wartość konwertowany jest większe niż maksymalne dodatnie podpisane long wartość.
KONIEC Microsoft szczególne