Opérateurs de relation : <, >, <= et >=

Syntaxe

expression < expression
expression > expression
expression <= expression
expression >= expression

Notes

Les opérateurs relationnels binaires déterminent les relations suivantes :

  • Inférieur à (<)

  • Supérieur à (>)

  • Inférieur ou égal à (<=)

  • Supérieur ou égal à (>=)

Les opérateurs relationnels ont une associativité de gauche à droite. Les deux opérandes des opérateurs relationnels doivent être de type arithmétique ou pointeur. Ils génèrent des valeurs de type bool. La valeur retournée est false (0) si la relation dans l’expression est false. Sinon, la valeur retournée est true (1).

Exemple

// expre_Relational_Operators.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;

int main() {
   cout  << "The true expression 3 > 2 yields: "
         << (3 > 2) << endl
         << "The false expression 20 < 10 yields: "
         << (20 < 10) << endl;
}

Les expressions de l’exemple précédent doivent être placées entre parenthèses, car l’opérateur d’insertion de flux (<<) a une priorité plus élevée que les opérateurs de relation. Par conséquent, la première expression sans parenthèses est évaluée comme suit :

(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");

Les conversions arithmétiques usuelles traitées dans Conversions standard sont appliquées aux opérandes de types arithmétiques.

Comparaison des pointeurs

Lorsque deux pointeurs vers des objets du même type sont comparés, le résultat est déterminé par l'emplacement des objets pointés figurant dans l'espace d'adressage du programme. Les pointeurs peuvent également être comparés à une expression constante qui a la valeur 0, ou à un pointeur de type void *. Si une comparaison de pointeurs est effectuée avec un pointeur de type void *, l’autre pointeur est implicitement converti en type void *. Ensuite la comparaison est effectuée.

Deux pointeurs de types différents ne peuvent pas être comparés à moins que :

  • Un type est un type de classe dérivé de l'autre type.

  • L’un des pointeurs, au moins, est explicitement converti (casté) en type void *. (L’autre pointeur est implicitement converti en type void * pour la conversion.)

Deux pointeurs du même type qui pointent vers le même objet ont la garantie d'être de comparer une valeur égale. Si deux pointeurs vers des membres non statique d'un objet sont comparés, les règles suivantes s'appliquent :

  • Si le type de classe n’est pas union, et si les deux membres ne sont pas séparés par un access-specifier, par exemple public, protected ou private, le pointeur vers le membre déclaré en dernier a une valeur supérieure à celle du pointeur vers le membre déclaré plus tôt.

  • Si les deux membres sont séparés par un access-specifier, les résultats ne sont pas définis.

  • Si le type de classe est union, les pointeurs vers les différents membres de données de ce union sont identiques.

Si les deux pointeurs pointent vers des éléments du même tableau ou vers l'avant dernier élément du tableau, le pointeur vers l'objet avec l'indice le plus élevé compare une valeur supérieure. La comparaison des pointeurs est garantie comme étant valide uniquement lorsque les pointeurs font référence à des objets du même tableau ou à l'emplacement situé après la fin du tableau.

Voir aussi

Expressions avec opérateurs binaires
Opérateurs intégrés, priorité et associativité C++
Opérateurs relationnels et d’égalité C