Převody typů podepsané integrál
Když znaménkem je převeden na celé číslo bez znaménka s stejné nebo větší velikosti a není záporné hodnoty znaménkem, hodnota je beze změny.Převod je tvořeno znak rozšíření znaménkem.Podepsané celé číslo, bude převedena na kratší znaménkem zkrácením nejvyšších bitů.Výsledek je interpretován jako hodnota bez znaménka, jak ukazuje tento příklad.
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Žádné informace se neztratí při převodu znaménkem na pohyblivé, s výjimkou, že některé přesnost může dojít ke ztrátě při long int nebo nepodepsaný dlouhý int hodnota je převedena na plovoucí hodnotu.
Následující tabulka shrnuje převody z typů podepsané.Tato tabulka předpokládá, že char ve výchozím nastavení je podepsán typu.Použijte možnost kompilace změnit výchozí nastavení pro char typ bez znaménka, převody v převody z typů nepodepsané tabulky pro unsigned char typu použít namísto převody v následující tabulce převody z podepsané typů.
Převody typů podepsané integrál
Od |
Akce |
Metoda |
---|---|---|
char1 |
short |
Znak rozšíření |
char |
long |
Znak rozšíření |
char |
unsigned char |
Zachovat vzorek; nejvyšších bitů ztratí funkce jako znaménkový bit |
char |
unsigned short |
Znak rozšířit na krátké; převést krátké na nepodepsané krátké |
char |
unsigned long |
Znak rozšířit na dlouhý; převést dlouhý naunsigned long |
char |
float |
Znak rozšířit na dlouhý; převést dlouhý na float |
char |
double |
Znak rozšířit na dlouhý; převést dlouhý na double |
char |
long double |
Znak rozšířit na dlouhý; převést dlouhý na double |
short |
char |
Zachovat dolní bajt |
short |
long |
Znak rozšíření |
short |
unsigned char |
Zachovat dolní bajt |
short |
unsigned short |
Zachovat bit vzorek; nejvyšších bitů ztratí funkce jako znaménkový bit |
short |
unsigned long |
Znak rozšířit na dlouhý; převést dlouhý naunsigned long |
short |
float |
Znak rozšířit na dlouhý; převést dlouhý na float |
short |
double |
Znak rozšířit na dlouhý; převést dlouhý na double |
short |
long double |
Znak rozšířit na dlouhý; převést dlouhý na double |
long |
char |
Zachovat dolní bajt |
long |
short |
Zachovat nejnižší word |
long |
unsigned char |
Zachovat dolní bajt |
long |
unsigned short |
Zachovat nejnižší word |
long |
unsigned long |
Zachovat bit vzorek; nejvyšších bitů ztratí funkce jako znaménkový bit |
long |
float |
Představují jako plovoucí.Pokud dlouhý nemůže být zastoupeny přesně, některé je ztráta přesnosti. |
long |
double |
Představují jako dvojité.Pokud dlouhý nelze přesně jako dvojité, dojde ke ztrátě některých přesnost. |
long |
long double |
Představují jako dvojité.Pokud dlouhý nelze přesně jako dvojité, dojde ke ztrátě některých přesnost. |
1.Všechny char položky se předpokládá, že char ve výchozím nastavení je podepsán typu.
Konkrétní společnosti Microsoft
C kompilátor Microsoft 32bitové celé číslo je ekvivalentní dlouhý.Převod int hodnotu pokračuje stejné jako pro dlouhé.
Konec konkrétní společnosti Microsoft