Condividi tramite


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 opt

type-name è un tipo ed cast-expression è un valore da convertire in tale tipo. Un'espressione con un cast di tipo non è un l-value. 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 tipo validi

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 di Integer (void *), un puntatore a un oggetto o un puntatore a funzione

Puntatore a funzione

Qualsiasi tipo di integrale (void *), un puntatore a un oggetto o un puntatore a funzione

Una struttura, un'unione o una matrice

Nessuno

Tipo void

Qualsiasi tipo

È possibile eseguire il cast di un identificatore al tipo void. Tuttavia, se il tipo specificato in un'espressione cast-tipo non è void, l'identificatore di cui viene eseguito il cast al tipo non può essere un'espressione void. È possibile eseguire il cast di qualsiasi espressione a void, ma non è possibile eseguire il cast di un'espressione di tipo void in alcun altro tipo. Ad esempio, una funzione con il tipo restituito void non può avere il relativo cast restituito a un altro tipo.

Tenere presente che un'espressione void * dispone di un puntatore a tipo a void, non al tipo void. Se viene eseguito il cast di un oggetto al tipo void, l'espressione risultante non può essere assegnata ad alcun elemento. Analogamente, un oggetto cast-tipo non è un l-value valido, pertanto nessuna assegnazione può essere eseguita in tale oggetto.

Sezione specifica Microsoft

Un cast di tipo può essere un'espressione l-value se la dimensione dell'identificatore non cambia. Per informazioni sulle espressioni di l-value, vedere Espressioni r-value e l-value.

Fine sezione specifica Microsoft

È possibile convertire un'espressione nel tipo void con un cast, ma l'espressione risultante può essere utilizzata solo quando non è obbligatorio un valore. Un puntatore a oggetto convertito nel tipo void * e convertito nuovamente nel tipo originale restituirà il relativo valore originale.

Vedere anche

Concetti

Conversioni di tipi (C)