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!