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!