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

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