Sdílet prostřednictvím


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
char1 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ě doublevyjá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ě doublevyjá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.

Viz také

Převody přiřazení