Maison >développement back-end >C++ >En quoi la fonction d'opérateur conditionnel diffère-t-elle entre C et C ?

En quoi la fonction d'opérateur conditionnel diffère-t-elle entre C et C ?

DDD
DDDoriginal
2024-11-03 02:10:02863parcourir

How Does the Conditional Operator Function Differ Between C and C  ?

L'opérateur conditionnel en C versus C

L'opérateur conditionnel (?) en C présente des distinctions subtiles par rapport à son homologue en C, en particulier en sa capacité à renvoyer une lvalue.

Renvoyer une Lvalue

En C , l'opérateur conditionnel peut renvoyer une lvalue, qui est une variable ou une expression qui peut être affectée à . Cela permet des opérations telles que :

<code class="c++">(true ? a : b) = 1;</code>

Dans cet exemple, la variable a se voit attribuer la valeur 1 si la condition true est vraie.

En revanche, C ne permet pas aux lvalues ​​de être restitué par l’opérateur conditionnel. Pour obtenir un effet similaire, il faut utiliser des instructions if/else ou manipuler directement les références :

<code class="c">*(true ? &a : &b) = 1;</code>

Précédence de l'opérateur

De plus, l'opérateur conditionnel de C est égal priorité avec l'opérateur d'affectation (=) et les groupes de droite à gauche. Cela signifie qu'un code tel que :

<code class="c++">true ? a = 1 : b = 2;</code>

est valide. Cependant, en C, sans parenthèses entourant la dernière expression :

<code class="c">true ? a = 1 : (b = 2);</code>

une erreur se produira.

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