Sdílet prostřednictvím


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

Viz také

Koncepty

Přiřazení převody