Maison  >  Article  >  développement back-end  >  Quelles sont les différences, le cas échéant, entre la valeur (type) et le type (valeur) dans le casting C ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-21 05:43:10185parcourir

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!

Déclaration:
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