Maison >développement back-end >C++ >Le résultat de l'opérateur ternaire est-il une Lvalue ou une Rvalue ?
Opérateur conditionnel ternaire et son résultat Lvalue ou Rvalue
L'opérateur ternaire/conditionnel ('?:') fournit une syntaxe abrégée pour sélectionner une des deux expressions basées sur une condition. Comprendre le type de résultat de cet opérateur est crucial pour diverses tâches de programmation.
Expression conditionnelle en tant que Lvalue
L'opérateur conditionnel renvoie une lvalue lorsque les deuxième et troisième opérandes sont des lvalues du même type. Ceci est observé lorsque les deux opérandes (x et y) dans le code suivant sont des entiers :
int x = 1; int y = 2; (x > y ? x : y) = 100; // Assignment is allowed since the result is an lvalue
Dans ce cas, l'expression conditionnelle (x > y ? x : y) est une lvalue, qui permet l'affectation ultérieure à 100.
Expression conditionnelle comme Rvalue
Cependant, lorsque les deuxième et troisième opérandes ont des types différents, l'expression conditionnelle devient une rvalue. Ceci est évident dans le code suivant :
int x = 1; long y = 2; (x > y ? x : y) = 100; // Error: Assignment is not allowed for rvalues
En raison de la conversion implicite de x en long pour correspondre au type de y, l'expression conditionnelle devient une rvalue. Étant donné que les rvalues ne sont pas modifiables, l'opération d'affectation échoue.
Détermination du type de résultat
Le type et la catégorie de valeur d'une expression conditionnelle sont déterminés au moment de la compilation. Il est conforme aux règles suivantes :
La compréhension de ces règles garantit une utilisation efficace de l'opérateur ternaire/conditionnel.
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!