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
Patricia Arquetteoriginal
2024-11-07 16:45:02269parcourir

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;

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

*(true ? &a : &b) = 1;

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

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

(true ? a = 1 : (b = 2));

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