Maison > développement back-end > C++ > le corps du texte

Quelles sont les différences, le cas échéant, entre la valeur (type) et le type (valeur) dans le casting C ?

Susan Sarandon
Libérer: 2024-11-21 05:43:10
original
204 Les gens l'ont consulté

What are the differences, if any, between (type)value and type(value) in C   casting?

Comprendre les nuances de (type)value et type(value) en C

En C, deux syntaxes différentes existent pour la conversion de type explicite : (type)valeur et type(valeur). Cette distinction soulève la question : quelles sont les différences, le cas échéant, entre ces deux expressions ?

Aucune différence en simple casting

Selon la norme C (section 5.2 .3), lorsqu'un simple spécificateur de type est suivi d'une seule expression entre parenthèses, l'expression résultante crée une valeur du type spécifié à partir de l'expression donnée.

Équivalence de la valeur (type) et type(value)

Pour une seule expression, (type)value est équivalent à type(value) à la fois dans la définition et dans le sens. Cela signifie qu'il n'y a absolument aucune différence entre ces deux expressions lors de la conversion d'une valeur unique en un type spécifié.

Différence avec plusieurs valeurs

Cependant, une différence subtile apparaît lors de la conversion d'une liste de valeurs séparées par des virgules. Dans ce cas, si le type spécifié est une classe avec un constructeur correctement déclaré, alors type(x1, x2, ...) équivaut à créer une variable temporaire t de type T avec les valeurs données et à attribuer la valeur de t à l'expression.

Restrictions relatives aux noms de types

En guise de remarque supplémentaire, il existe certains noms de types pour lesquels la syntaxe type(value) ne peut pas être utilisée. Par exemple, alors que (char )string est valide, char (string) échouera à la compilation. Cependant, si le type est alias à l'aide de typedef, la syntaxe type(value) peut être utilisée avec le nom d'alias.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal