Maison > développement back-end > C++ > Pourquoi l'opérateur conditionnel gère-t-il les lvalues ​​différemment en C et C ?

Pourquoi l'opérateur conditionnel gère-t-il les lvalues ​​différemment en C et C ?

Patricia Arquette
Libérer: 2024-11-07 16:45:02
original
336 Les gens l'ont consulté

Why does the conditional operator handle lvalues differently in C and C  ?

Différences entre les opérateurs conditionnels entre C et C

L'opérateur conditionnel (?) propose des comportements variables en C et C . Plus précisément, cela concerne sa capacité à renvoyer une lvalue.

En C , l'opérateur peut renvoyer une lvalue, autorisant des expressions telles que :

(true ? a : b) = 1;
Copier après la connexion

Cependant, C restreint cette fonctionnalité, nécessitant l'utilisation de if/else ou de références directes :

*(true ? &a : &b) = 1;
Copier après la connexion

De plus, C accorde une priorité égale aux opérateurs ?: et =, en les regroupant de droite à gauche. Cela signifie que ce qui suit est syntaxiquement correct en C :

(true ? a = 1 : b = 2);
Copier après la connexion

En revanche, C nécessite des parenthèses pour résoudre de telles expressions :

(true ? a = 1 : (b = 2));
Copier après la connexion

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