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
Libérer: 2024-12-08 18:48:12
original
489 Les gens l'ont consulté

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;
Copier après la connexion

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;
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal