Conversioni di cast di tipo
È possibile utilizzare i cast di tipo per convertire i tipi in modo esplicito.
Sintassi
cast-expression
:
unary-expression
(
type-name
)
cast-expression
type-name
:
specifier-qualifier-list
abstract-declarator
optare
type-name
è un tipo e cast-expression
è un valore da convertire in tale tipo. Un'espressione con un cast di tipo non è un l-value. L'oggetto cast-expression
viene convertito come se fosse stato assegnato a una variabile di tipo type-name
. Le regole di conversione per le assegnazioni (descritte in Conversioni di assegnazione) si applicano anche ai cast di tipo. Nella tabella seguente sono illustrati i tipi per cui è possibile eseguire il cast in qualsiasi tipo specificato.
Cast di tipi legali
Tipi di destinazione | Potenziali origini |
---|---|
Tipi integrali | Qualsiasi tipo di Integer o di tipo a virgola mobile o un puntatore a un oggetto |
A virgola mobile | Qualsiasi tipo aritmetico |
Puntatore a un oggetto o void * |
Qualsiasi tipo integer, void * , un puntatore a un oggetto o un puntatore a funzione |
Puntatore a funzione | Qualsiasi tipo di integrale, un puntatore a un oggetto o un puntatore a funzione |
Una struttura, un'unione o una matrice | None |
Tipo void | Qualsiasi tipo |
È possibile eseguire il cast di un identificatore al tipo void
. Tuttavia, se il tipo specificato in un'espressione type-cast non void
è , l'identificatore sottoposto a cast a tale tipo non può essere un'espressione void
. È possibile eseguire il cast di qualsiasi espressione su void
, ma non è possibile eseguire il cast di un'espressione di void
tipo a qualsiasi altro tipo. Ad esempio, una funzione con void
tipo restituito non può avere il cast restituito a un altro tipo.
Un'espressione void *
dispone di un puntatore di tipo a void
, non di tipo void
. Se viene eseguito il cast di un oggetto al void
tipo, l'espressione risultante non può essere assegnata ad alcun elemento. Analogamente, un oggetto cast di tipo non è un valore l-value accettabile, quindi non è possibile eseguire alcuna assegnazione a un oggetto cast di tipo.
Sezione specifica Microsoft
Un cast di tipo può essere un'espressione l-value purché le dimensioni dell'identificatore non cambino. Per informazioni sulle espressioni l-value, vedere Espressioni L-Value e R-Value.
Fine sezione specifica Microsoft
È possibile convertire un'espressione in un tipo void
con un cast, ma l'espressione risultante può essere usata solo se non è necessario un valore. Un puntatore all'oggetto void *
convertito in e di nuovo nel tipo originale restituirà il valore originale.