Maison >développement back-end >C++ >Comment l'opérateur conditionnel de C (?:) détermine-t-il Lvalue ou Rvalue en fonction des types d'opérandes ?

Comment l'opérateur conditionnel de C (?:) détermine-t-il Lvalue ou Rvalue en fonction des types d'opérandes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-08 18:48:12490parcourir

How Does C  's Conditional Operator (?:) Determine Lvalue or Rvalue Based on Operand Types?

Type de système et catégorie de valeur dans l'opérateur conditionnel (?:)

En C , l'opérateur conditionnel (?:) est évalué comme un valeur d'un type spécifique et d'une catégorie de valeur, qui définit s'il peut faire référence à un objet en mémoire ou non.

Dans le premier exemple fourni :

int x = 1;
int y = 2;
(x > y ? x : y) = 100;

X et y sont tous deux des variables entières, et la condition x > y est faux. Par conséquent, y reçoit la valeur 100. Puisque le type des deux opérandes est le même, l'expression conditionnelle elle-même devient une lvalue, ce qui signifie qu'elle peut être attribuée à.

Cependant, dans le deuxième exemple :

int x = 1;
long y = 2;
(x > y ? x : y) = 100;

x est un int et y est un long, ce qui rend les types d'opérandes différents. Pour comparer x et y, une conversion est nécessaire, ce qui fait que l'expression conditionnelle devient une valeur r plutôt qu'une valeur l. Puisqu'une rvalue ne peut pas être attribuée, l'affectation dans ce cas n'est pas valide.

Pour résumer, une expression conditionnelle est une lvalue si les deuxième et troisième opérandes sont des lvalues ​​du même type, permettant l'affectation au résultat. S'ils ont des types différents, l'expression conditionnelle devient une rvalue, à laquelle on ne peut pas attribuer.

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