Dela via


Type-Cast konverteringar

Du kan använda typgjutningar för att explicit konvertera typer.

Syntax

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

type-name:
specifier-qualifier-list abstract-declarator välja

type-name är en typ och cast-expression är ett värde som ska konverteras till den typen. Ett uttryck med en typgjutning är inte ett l-värde. cast-expression Konverteras som om den hade tilldelats till en variabel av typen type-name. Konverteringsreglerna för tilldelningar (som beskrivs i Tilldelningskonverteringar) gäller även för typgjutningar. I följande tabell visas de typer som kan castas till en viss typ.

Måltyper Potentiella källor
Integraltyper Alla heltalstyper eller flyttalstyper eller pekare till ett objekt
Flyttal Alla aritmetiska typer
En pekare till ett objekt, eller void * Alla heltalstyper, void *, en pekare till ett objekt eller en funktionspekare
Funktionspekare Alla integraltyper, pekare till ett objekt eller en funktionspekare
En struktur, union eller matris Ingen
Voidtyp Alla typer

Alla identifierare kan castas till void typ. Men om den typ som anges i ett typuttryck inte voidär , kan identifieraren som skickas till den typen inte vara ett void uttryck. Alla uttryck kan gjutas till void, men ett uttryck av typen void kan inte gjutas till någon annan typ. En funktion med void returtyp kan till exempel inte ha sin returgjutning till en annan typ.

Ett void * uttryck har en typpekare till void, inte typ void. Om ett objekt skickas till void typ kan det resulterande uttrycket inte tilldelas till något objekt. På samma sätt är ett typgjutet objekt inte ett acceptabelt l-värde, så ingen tilldelning kan göras till ett typgjutet objekt.

Microsoft-specifik

En typgjutning kan vara ett l-värde-uttryck så länge storleken på identifieraren inte ändras. Information om l-value-uttryck finns i L-Value och R-Value Expressions.

Avsluta Microsoft Specifik

Du kan konvertera ett uttryck till att skriva void med en cast, men det resulterande uttrycket kan bara användas där ett värde inte krävs. En objektpekare som konverteras till void * och tillbaka till den ursprungliga typen återgår till sitt ursprungliga värde.

Se även

Typkonverteringar