Převody z integrálních typů se znaménkem
Při převodu signed integer na celé číslo nebo typ s plovoucí desetinnou čárkou se hodnota nezmění, pokud je reprezentovatelná v typu výsledku.
Pokud je celé číslo se znaménkem převedeno na celé číslo větší velikosti, hodnota je prodloužena. Při převodu na celé číslo menší velikosti se bity s vysokým pořadím zkrátí. Výsledek se interpretuje pomocí typu výsledku, jak je znázorněno v tomto příkladu:
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Když kompilátor převede podepsané celé číslo na typ s plovoucí desetinnou čárkou, pokud původní hodnota není přesně reprezentovatelná v typu výsledku, je výsledkem další vyšší nebo nižší reprezentovatelná hodnota.
Informace o velikostech celočíselných typů a typů s plovoucí desetinou čárkou naleznete v tématu Úložiště základních typů.
Následující tabulka shrnuje převody z celočíselných typů se signepsem. Předpokládá se, že char
typ je ve výchozím nastavení podepsaný. Pokud pro změnu výchozího char
typu typu na nepodepsaný použijete možnost kompilace, použijí se převody zadané v tabulce Převody z nepodepsaného celočíselného typu pro unsigned char
daný typ místo převodů v této tabulce.
Specifické pro Microsoft
V kompilátoru int
Microsoftu jsou long
odlišné, ale ekvivalentní typy. int
Převod hodnoty pokračuje stejným způsobem jako převod hodnoty long
.
END Microsoft Specific
Tabulka převodů z celočíselných typů se signy
Z | Záměr | metoda |
---|---|---|
char 1 |
short |
Rozšíření podpisu |
char |
long |
Rozšíření podpisu |
char |
long long |
Rozšíření podpisu |
char |
unsigned char |
Zachovat vzor; Bit s vysokým pořadím ztratí funkci jako bit znaménka. |
char |
unsigned short |
Znaménko rozšířit na short ; převést short na unsigned short |
char |
unsigned long |
Znaménko rozšířit na long ; převést long na unsigned long |
char |
unsigned long long |
Znaménko rozšířit na long long ; převést long long na unsigned long long |
char |
float |
Přesně jako float |
char |
double |
Přesně jako double |
char |
long double |
Přesně jako long double |
short |
char |
Zachování bajtů s nízkým pořadím |
short |
long |
Rozšíření podpisu |
short |
long long |
Rozšíření podpisu |
short |
unsigned char |
Zachování bajtů s nízkým pořadím |
short |
unsigned short |
Zachovat bitový vzor; Bit s vysokým pořadím ztratí funkci jako bit znaménka. |
short |
unsigned long |
Znaménko rozšířit na long ; převést long na unsigned long |
short |
unsigned long long |
Znaménko rozšířit na long long ; převést long long na unsigned long long |
short |
float |
Přesně jako float |
short |
double |
Přesně jako double |
short |
long double |
Přesně jako long double |
long |
char |
Zachování bajtů s nízkým pořadím |
long |
short |
Zachování slova s nízkým pořadím |
long |
long long |
Rozšíření podpisu |
long |
unsigned char |
Zachování bajtů s nízkým pořadím |
long |
unsigned short |
Zachování slova s nízkým pořadím |
long |
unsigned long |
Zachovat bitový vzor; Bit s vysokým pořadím ztratí funkci jako bit znaménka. |
long |
unsigned long long |
Znaménko rozšířit na long long ; převést long long na unsigned long long |
long |
float |
Reprezentovat jako float . Pokud long není možné přesně reprezentovat, dojde ke ztrátě určité přesnosti. |
long |
double |
Přesně jako double |
long |
long double |
Přesně jako long double |
long long |
char |
Zachování bajtů s nízkým pořadím |
long long |
short |
Zachování slova s nízkým pořadím |
long long |
long |
Zachování dwordu s nízkým pořadím |
long long |
unsigned char |
Zachování bajtů s nízkým pořadím |
long long |
unsigned short |
Zachování slova s nízkým pořadím |
long long |
unsigned long |
Zachování dwordu s nízkým pořadím |
long long |
unsigned long long |
Zachovat bitový vzor; Bit s vysokým pořadím ztratí funkci jako bit znaménka. |
long long |
float |
Reprezentovat jako float . Pokud long long není možné přesně reprezentovat, dojde ke ztrátě určité přesnosti. |
long long |
double |
Reprezentovat jako double . Pokud long long není možné přesně double vyjádřit , dojde ke ztrátě určité přesnosti. |
long long |
long double |
Reprezentovat jako double . Pokud long long není možné přesně double vyjádřit , dojde ke ztrátě určité přesnosti. |
1 Všechny char
položky předpokládají, že char
typ je ve výchozím nastavení podepsán.