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-declaratoropt

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é.

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.

Voir aussi

Conversions de type