Maison >développement back-end >C++ >Pourquoi l'opérateur conditionnel gère-t-il les lvalues différemment en C et 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!