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 typevoid *
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 exemplepublic
,protected
ouprivate
, 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 ceunion
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour