Převody typů nepodepsané integrál
Celé číslo bez znaménka je převeden na kratší nepodepsaný nebo podepsaný celé zkrácením nejvyšších bitů nebo celé již nepodepsaný nebo podepsaný číslo rozšířením nula (najdete převody z typů nepodepsané tabulky).
Hodnota s integrálního typu převeden na znaménkem s menší velikostí nebo celé číslo bez znaménka je převeden na jeho odpovídající znaménkem, hodnota beze změny mohou být zastoupeny v novém typu.Však hodnota představuje změny, pokud je znaménkový bit nastaven, jako v následujícím příkladu.
int j;
unsigned short k = 65533;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Pokud nelze reprezentovat, výsledkem je definované implementací.Viz Převody typu Cast informace o zpracování kompilátor Microsoft C snížení celá čísla.Stejné chování výsledky z převodu celé číslo nebo typ obsazení celé číslo.
Nepodepsané hodnoty převedeny tak, že zachovává své hodnoty a není přímo reprezentovat C.Jedinou výjimkou je převod z unsigned long na plovoucí, který ztratí nejvíce dolní bity.Jinak hodnota zachována, znaménkem nebo bez znaménka.Hodnota integrálního typu je převeden na plovoucí a hodnota je mimo rozsah reprezentovat, výsledkem nedefinovaná.(Viz Úložiště základní typy informace o rozsahu pro typy nedílnou a plovoucí desetinnou čárkou.)
Následující tabulka shrnuje převody z typů bez znaménka.
Převody typů nepodepsané integrál
Od |
Akce |
Metoda |
---|---|---|
unsigned char |
char |
Zachovat bit vzorek; nejvyšších bitů se změní znaménko bit |
unsigned char |
short |
Rozšířit nula |
unsigned char |
long |
Rozšířit nula |
unsigned char |
unsigned short |
Rozšířit nula |
unsigned char |
unsigned long |
Rozšířit nula |
unsigned char |
float |
Převést na dlouhý; převést dlouhý na float |
unsigned char |
double |
Převést na dlouhý; převést dlouhý na double |
unsigned char |
long double |
Převést na dlouhý; převést dlouhý na double |
unsigned short |
char |
Zachovat dolní bajt |
unsigned short |
short |
Zachovat bit vzorek; nejvyšších bitů se změní znaménko bit |
unsigned short |
long |
Rozšířit nula |
unsigned short |
unsigned char |
Zachovat dolní bajt |
unsigned short |
unsigned long |
Rozšířit nula |
unsigned short |
float |
Převést na dlouhý; převést dlouhý na float |
unsigned short |
double |
Převést na dlouhý; převést dlouhý na double |
unsigned short |
long double |
Převést na dlouhý; převést dlouhý na double |
unsigned long |
char |
Zachovat dolní bajt |
unsigned long |
short |
Zachovat nejnižší word |
unsigned long |
long |
Zachovat bit vzorek; nejvyšších bitů se změní znaménko bit |
unsigned long |
unsigned char |
Zachovat dolní bajt |
unsigned long |
unsigned short |
Zachovat nejnižší word |
unsigned long |
float |
Převést na dlouhý; převést dlouhý na float |
unsigned long |
double |
Převést přímo na double |
unsigned long |
long double |
Převést na dlouhý; převést dlouhý na double |
Konkrétní společnosti Microsoft
Pro c kompilátor Microsoft 32bitové unsigned int je ekvivalentní typu unsigned long typu.Převod unsigned int hodnotu postupuje stejným způsobem jako převod unsigned long.Převody z unsigned long hodnoty plovoucí nejsou přesné, pokud je převáděna hodnota větší než maximální kladné podepsané dlouhý hodnotu.
Konec konkrétní společnosti Microsoft