Conversions de type cast
Vous pouvez utiliser des casts de type pour convertir explicitement les types.
Syntaxe
cast-expression
:
unary-expression
(
type-name
)
cast-expression
type-name
:
specifier-qualifier-list
abstract-declarator
opt
Le type-name
est un type et cast-expression
est une valeur à convertir dans ce type. Une expression avec un cast de type n’est pas une l-value. Le cast-expression
est converti comme s’il avait été affecté à une variable de type type-name
. Les règles de conversion pour les assignations (décrites dans Conversions d'assignation) s'appliquent également aux casts de type. Le tableau suivant indique les types pouvant être castés en un type donné.
Casts de type autorisés
Types de destination | Sources possibles |
---|---|
Types intégraux | Tout type entier ou type à virgule flottante ou pointeur vers un objet |
Virgule flottante | Tout type arithmétique |
Pointeur vers un objet, ou void * |
Type entier,void * , pointeur vers un objet ou pointeur de fonction |
Pointeur fonction | Tout type intégral, pointeur vers un objet ou pointeur fonction |
Structure, union ou tableau | None |
Type void | Tout type |
Tout identificateur peut être converti en type void
. Toutefois, si le type spécifié dans une expression de cast de type n’est pas void
, l’identificateur casté dans ce type ne peut pas être une expression void
. Toute expression peut être castée en void
, mais une expression de type void
ne peut pas être castée en un autre type. Par exemple, une fonction avec un type de retour void
ne peut pas avoir son retour casté en un autre type.
Une expression void *
a un pointeur de type vers void
, pas de type void
. Si un objet est casté en type void
, l’expression obtenue ne peut être assignée à aucun élément. De même, un objet de cast de type n’est pas une l-value acceptable. Ainsi, aucune assignation ne peut devenir un objet de cast de type.
Section spécifique à Microsoft
Un cast de type peut être une expression l-value tant que la taille de l’identificateur ne change pas. Pour plus d'informations sur les expressions l-value, consultez Expressions L-Value et R-Value.
FIN de la section spécifique à Microsoft
Vous pouvez convertir une expression en un type void
avec un cast, mais l’expression obtenue peut être utilisée uniquement si une valeur n’est pas requise. Un pointeur d’objet converti en void *
, puis rétabli au type d’origine retourne à sa valeur d’origine.