Maison > développement back-end > C++ > Quand `(type)value` est-il différent de `type(value)` en C ?

Quand `(type)value` est-il différent de `type(value)` en C ?

DDD
Libérer: 2024-11-26 12:36:13
original
398 Les gens l'ont consulté

When is `(type)value` Different from `type(value)` in C  ?

Clarifier la distinction entre (type)value et type(value)

En C , les expressions (type)value et type(value ) peut sembler interchangeable, mais il existe une différence subtile à prendre en compte. Plus précisément, l'opérateur (type) peut être utilisé pour convertir une valeur en type spécifié, alors que type(value) est équivalent à un appel de constructeur uniquement lorsqu'une liste de valeurs est fournie.

Selon la norme C, un spécificateur de type simple (type) suivi d'une liste d'expressions entre parenthèses crée une valeur du type spécifié en fonction de la liste d'expressions donnée. S'il n'y a qu'une seule expression, (type)value et type(value) fonctionnent comme des expressions cast.

Cependant, une liste de valeurs séparées par des virgules dans l'expression introduit une distinction. Dans ce cas, type(value) devient équivalent à un appel de constructeur. Une variable temporaire est implicitement déclarée et l'expression initialise effectivement cette variable en utilisant les valeurs fournies. Le résultat est la rvalue de la variable temporaire.

Bien que la plupart des types puissent être utilisés de manière interchangeable sous les formes (type)valeur et type(valeur), certains noms de types peuvent ne pas fonctionner pour cette dernière syntaxe. Par exemple, l'utilisation du nom de type char * dans type(value) entraînera une erreur de compilation, alors que (type)value fonctionne correctement. Dans de tels cas, l'utilisation d'un typedef pour définir un nom de type alternatif peut permettre l'utilisation de la syntaxe type(value).

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal