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

L'opérateur conditionnel peut-il attribuer une valeur L en C vs C ?

Barbara Streisand
Libérer: 2024-11-02 11:33:02
original
226 Les gens l'ont consulté

Can the Conditional Operator Assign to an Lvalue in C vs. C  ?

Les nuances de l'opérateur conditionnel en C vs C

L'opérateur conditionnel, ou opérateur ternaire, désigné par la syntaxe ?:, joue un rôle crucial dans C et C . Cependant, une différence subtile mais significative existe entre les deux langages concernant la façon dont cet opérateur traite les lvalues.

Comportement de la valeur

En C, l'opérateur conditionnel ne peut pas attribuer de valeur à une lvalue (valeur de gauche), une variable ou un objet qui peut être modifié ou affecté. Par exemple, le code suivant n'est pas valide en C :

<code class="c">(true ? a : b) = 1;</code>
Copier après la connexion

Au lieu de cela, il faut recourir à une instruction if-else ou utiliser un pointeur pour attribuer la valeur :

<code class="c">*(true ? &a : &b) = 1;</code>
Copier après la connexion

Précédence et associativité

Une autre différence clé concerne la préséance et l'associativité de l'opérateur conditionnel par rapport à l'affectation opérateur (=). En C , les opérateurs ?: et = ont la même priorité et se regroupent de droite à gauche. Cela implique que le code suivant est valide :

<code class="cpp">(true ? a = 1 : b = 2);</code>
Copier après la connexion

Cependant, en C, l'absence de priorité égale nécessiterait des parenthèses autour de la deuxième expression :

<code class="c">(true ? a = 1 : (b = 2));</code>
Copier après la connexion

Implications dans Pratique

Cette différence de comportement a des implications dans divers scénarios, tels que la définition des valeurs des membres de la classe dans les constructeurs ou l'initialisation des références aux objets. Les programmeurs C doivent être conscients de la restriction lvalue en C et employer des approches alternatives lorsqu'ils travaillent avec des lvalues ​​dans des expressions conditionnelles.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!