y > 1) Toujours évaluer à False en C ? " />
Évaluer la validité de (4 > y > 1) en C
En C, l'expression (4 > y > 1) peut soulever des questions sur sa validité et son évaluation.
Pour comprendre son comportement, il est essentiel de savoir que les opérateurs de comparaison chaînés, tels que (4 > y > 1), sont analysés comme des comparaisons imbriquées de gauche à droite. Par conséquent, l'instruction :
(4 > y > 1)
est analysée comme :
((4 > y) > 1)
Les opérateurs de comparaison. (> et <) sont évalués dans l'ordre de l'expression, ce qui signifie que le résultat de (4 > y) est soit 0 (faux), soit 1 (vrai) en fonction de la comparaison.
Ensuite, le résultat de (4 > y) est comparé à 1 en utilisant l'opérateur supérieur à (>). Cependant, puisque le résultat de (4 >). y) est toujours 0 ou 1, il ne sera jamais supérieur à 1. Par conséquent, l'instruction entière renvoie toujours false.
Exception pour l'opérateur Surcharge :
Cependant, il existe une exception à ce comportement. Si y est un objet d'une classe avec un opérateur supérieur à surchargé (>), l'évaluation peut changer. Dans de tels cas, l'implémentation de l'opérateur surchargé dicte le comportement de l'expression.
Exemple :
Considérez le code suivant :
class mytype { }; mytype operator>(int x, const mytype &y) { return mytype(); } int main() { mytype y; cout << (4 > y > 1) << endl; return 0; }
Dans cet exemple, l'opérateur personnalisé Operator> car la classe mytype est utilisée, ce qui peut entraîner un comportement différent selon l'implémentation de la classe.
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!