Sdílet prostřednictvím


Převody přetypování

Přetypování typů můžete použít k explicitní převodu typů.

Syntaxe

cast-expression:
unary-expression
( type-name ) cast-expression

type-name:
specifier-qualifier-listabstract-declaratorvolit

Jedná se type-name o typ a cast-expression jedná se o hodnotu, která se má převést na tento typ. Výraz s přetypování typu není l-hodnota. Převede cast-expression se, jako by byla přiřazena proměnné typu type-name. Pravidla převodu pro přiřazení (uvedená v převodech přiřazení) platí i pro přetypování typů. Následující tabulka uvádí typy, které lze přetypovat na libovolný daný typ.

Cílové typy Potenciální zdroje
Celočíselné typy Jakýkoli typ celého čísla nebo typ s plovoucí desetinou čárkou nebo ukazatel na objekt
Plovoucí desetiná čárka Libovolný aritmetický typ
Ukazatel na objekt nebo void * Libovolný typ celého čísla, void *ukazatel na objekt nebo ukazatel funkce
Ukazatel funkce Jakýkoli celočíselný typ, ukazatel na objekt nebo ukazatel funkce
Struktura, sjednocení nebo pole Nic
Typ Void Libovolný typ

Libovolný identifikátor lze přetypovat na void typ. Pokud však typ zadaný ve výrazu přetypování typu není void, pak identifikátor přetypovaný na tento typ nemůže být void výraz. Libovolný výraz lze přetypovat na void, ale výraz typu void nelze přetypovat na žádný jiný typ. Například funkce s void návratovým typem nemůže mít návratové přetypování na jiný typ.

Výraz void * má ukazatel voidtypu , nikoli typ void. Pokud je objekt přetypován na void typ, výsledný výraz nemůže být přiřazen k žádné položce. Podobně objekt přetypování typu není přijatelnou l-hodnotou, takže nelze provést žádné přiřazení k objektu přetypování typu.

Specifické pro Microsoft

Přetypování typu může být výraz l-hodnota, pokud se velikost identifikátoru nezmění. Informace o výrazech l-value naleznete v tématu Výrazy L-Value a R-Value.

END Microsoft Specific

Výraz můžete převést na typ void pomocí přetypování, ale výsledný výraz se dá použít jenom v případě, že hodnota není povinná. Ukazatel objektu převedený na void * původní typ a zpět na původní typ se vrátí do původní hodnoty.

Viz také

Převody typu