Conversioni di cast di tipoType-Cast Conversions

È possibile utilizzare i cast di tipo per convertire i tipi in modo esplicito.You can use type casts to explicitly convert types.

SintassiSyntax

cast-expression:cast-expression:
espressione unariaunary expression

( type-name ) cast-expression( type-name ) cast-expression

type-name:type-name:
specifier-qualifier-list abstract-declarator optspecifier-qualifier-list abstract-declarator opt

type-name è un tipo e cast-expression è un valore da convertire in tale tipo.The type-name is a type and cast-expression is a value to be converted to that type. Un'espressione con un cast di tipo non è un l-value.An expression with a type cast is not an l-value. cast-expression viene convertito come se fosse stato assegnato a una variabile di tipo type-name.The cast-expression is converted as though it had been assigned to a variable of type type-name. Le regole di conversione per le assegnazioni (descritte in Conversioni di assegnazione) si applicano anche ai cast di tipo.The conversion rules for assignments (outlined in Assignment Conversions) apply to type casts as well. Nella tabella seguente sono illustrati i tipi per cui è possibile eseguire il cast in qualsiasi tipo specificato.The following table shows the types that can be cast to any given type.

Tipi di destinazioneDestination Types Potenziali originiPotential Sources
Tipi integraliIntegral types Qualsiasi tipo di Integer o di tipo a virgola mobile o un puntatore a un oggettoAny integer type or floating-point type, or pointer to an object
A virgola mobileFloating-point Qualsiasi tipo aritmeticoAny arithmetic type
Puntatore a un oggetto o (void \)A pointer to an object, or (*void ***) Qualsiasi tipo Integer (void \), un puntatore a un oggetto o un puntatore a funzioneAny integer type, (*void ***), a pointer to an object, or a function pointer
Puntatore a funzioneFunction pointer Qualsiasi tipo di integrale (void *), un puntatore a un oggetto o un puntatore a funzioneAny integral type, a pointer to an object, or a function pointer
Una struttura, un'unione o una matriceA structure, union, or array NoneNone
Tipo voidVoid type Qualsiasi tipoAny type

È possibile eseguire il cast di un identificatore al tipo void.Any identifier can be cast to void type. 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.However, if the type specified in a type-cast expression is not void, then the identifier being cast to that type cannot be a void expression. È 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.Any expression can be cast to void, but an expression of type void cannot be cast to any other type. Ad esempio, una funzione con il tipo restituito void non può avere il relativo cast restituito a un altro tipo.For example, a function with void return type cannot have its return cast to another type.

Tenere presente che un'espressione void \* è di tipo puntatore a void, non di tipo void.Note that a void \* expression has a type pointer to void, not type void. Se viene eseguito il cast di un oggetto al tipo void, l'espressione risultante non può essere assegnata ad alcun elemento.If an object is cast to void type, the resulting expression cannot be assigned to any item. Analogamente, un oggetto cast-tipo non è un l-value valido, pertanto nessuna assegnazione può essere eseguita in tale oggetto.Similarly, a type-cast object is not an acceptable l-value, so no assignment can be made to a type-cast object.

Sezione specifica MicrosoftMicrosoft Specific

Un cast di tipo può essere un'espressione l-value se la dimensione dell'identificatore non cambia.A type cast can be an l-value expression as long as the size of the identifier does not change. Per informazioni sulle espressioni l-value, vedere Espressioni L-Value e R-Value.For information on l-value expressions, see L-Value and R-Value Expressions.

Fine sezione specifica MicrosoftEND Microsoft Specific

È possibile convertire un'espressione nel tipo void con un cast, ma l'espressione risultante può essere utilizzata solo quando non è obbligatorio un valore.You can convert an expression to type void with a cast, but the resulting expression can be used only where a value is not required. Un puntatore a oggetto convertito nel tipo void \* e convertito nuovamente nel tipo originale restituirà il valore originale.An object pointer converted to void \* and back to the original type will return to its original value.

Vedere ancheSee Also

Conversioni di tipiType Conversions