Typumwandlungskonvertierungen
Sie können Typumwandlungen verwenden, um Typen explizit zu konvertieren.
Syntax
cast-expression
:
unary-expression
(
type-name
)
cast-expression
type-name
:
specifier-qualifier-list
abstract-declarator
opt
Der type-name
ist ein Typ, und cast-expression
ist ein Wert, der in diesen Typ konvertiert werden soll. Ein Ausdruck mit einer Typumwandlung ist kein L-Wert. cast-expression
wird wie bei einer Zuweisung zu einer Variablen des Typs type-name
konvertiert. Die Konvertierungsregeln für Zuweisungen (unter Zuweisungskonvertierungen beschrieben) gelten auch für Typumwandlungen. Die folgende Tabelle zeigt die Typen, die in jeden Typ umgewandelt werden können.
Gültige Typumwandlungen
Zieltypen | Mögliche Quellen |
---|---|
Ganzzahlige Typen | Ein beliebiger ganzzahliger Typ oder Gleitkommatyp oder Zeiger auf ein Objekt |
Gleitkomma | Beliebiger arithmetischer Typ |
Ein Zeiger auf ein Objekt oder void * |
Ein beliebiger ganzzahliger Typ, void * , ein Zeiger auf ein Objekt oder ein Funktionszeiger |
Funktionszeiger | Ein beliebiger ganzzahliger Typ, ein Zeiger auf ein Objekt oder einen Funktionszeiger |
Eine Struktur, Union oder ein Array | Keine |
void-Typ | Beliebiger Typ |
Jeder Bezeichner kann in den void
-Typ umgewandelt werden. Wenn jedoch der Typ, der in einem Typumwandlungsausdruck angegeben ist, nicht void
ist, kann der Bezeichner, der in diesen Typ umgewandelt wird, kein void
-Ausdruck sein. Jeder Ausdruck kann in void
umgewandelt werden, aber ein Ausdruck vom Typ void
kann nicht in einen anderen Typ umgewandelt werden. Beispielsweise kann die Rückgabe einer Funktion mit dem Rückgabetyp void
nicht in einen anderen Typ umgewandelt werden.
Ein void *
-Ausdruck weist einen Typzeiger auf void
und nicht den Typ void
auf. Wenn ein Objekt in einen void
-Typ umgewandelt wird, kann der resultierende Ausdruck keinem Element zugewiesen werden. Ebenso ist ein Typumwandlungsobjekt kein zulässiger L-Wert, sodass keine Zuweisung zu einem Typumwandlungsobjekt durchgeführt werden kann.
Microsoft-spezifisch
Eine Typumwandlung kann ein L-Wert-Ausdruck sein, solange die Größe des Bezeichners sich nicht ändert. Weitere Informationen zu l-Wert-Ausdrücken finden Sie unter L-Wert-und R-Wert-Ausdrücke.
Ende Microsoft-spezifisch
Sie können einen Ausdruck durch eine Umwandlung in den Typ void
konvertieren, der resultierende Ausdruck kann jedoch nur verwendet werden, wenn kein Wert erforderlich ist. Ein Objektzeiger, der in void *
und zurück in den ursprünglichen Typ konvertiert wird, kehrt zum ursprünglichen Wert zurück.