Relationale Operatoren: <
, >
, <=
und >=
Syntax
expression < expression
expression > expression
expression <= expression
expression >= expression
Hinweise
Die binären relationalen Operatoren bestimmen die folgenden Beziehungen:
Kleiner als (
<
)Größer als (
>
)Kleiner oder gleich (
<=
)Größer als oder gleich (
>=
)
Die relationalen Operatoren haben Assoziativität von links nach rechts. Beide Operanden aus relationalen Operatoren müssen vom arithmetischen oder vom Zeigertyp sein. Sie ergeben Werte des Typs bool
. Der zurückgegebene Wert ist false
(0), wenn die Beziehung im Ausdruck falsch ist. Andernfalls wird der Wert true
(1) zurückgegeben.
Beispiel
// 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;
}
Die Ausdrücke im vorangehenden Beispiel müssen in Klammern gesetzt werden, denn der Operator zum Einfügen des Datenstroms (<<
) hat Vorrang vor den relationalen Operatoren. Daher würde der erste Ausdruck ohne Klammern wie folgt ausgewertet:
(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");
Die üblichen arithmetischen Konvertierungen, die in Standardkonvertierungen beschrieben werden, werden auf Operanden arithmetischer Typen angewendet.
Vergleichen von Zeigern
Wenn zwei Zeiger auf Objekte vom gleichen Typs verglichen werden, wird das Ergebnis nach der Position der Objekte bestimmt, auf die im Adressbereich des Programms gezeigt wird. Zeiger können ebenfalls mit einem konstanten Ausdruck verglichen werden, der zu 0 oder einen Zeiger vom Typ void *
ausgewertet wird. Wenn ein Zeigervergleich mit einem Zeiger vom Typ void *
durchgeführt wird, wird der andere Zeiger implizit in den Typ void *
konvertiert. Anschließend wird verglichen.
Zwei Zeiger verschiedener Typen können nicht verglichen werden, es sei denn:
Ein Typ ist ein Klassentyp, der vom anderen Typ abgeleitet wird.
Mindestens einer der Zeiger wird explizit in den Typ
void *
konvertiert (umgewandelt). (Der andere Zeiger wird ür die Konvertierung implizit in den Typvoid *
konvertiert.)
Zwei Zeiger desselben Typs, die auf dasselbe Objekt zeigen, sind beim Vergleich garantiert gleich. Wenn zwei Zeiger auf nicht statische Member eines Objekts verglichen werden, gelten folgende Regeln:
Wenn die Klasse nicht vom Typ
union
ist und wenn die beiden Member nicht durch einen access-specifier, z. B.public
,protected
oderprivate
, getrennt sind, ergibt der Zeiger auf den zuletzt deklarierten Member beim Vergleich einen größeren Wert als der Zeiger auf den zuvor deklarierten Member.Wenn die zwei Member durch einen access-specifier getrennt sind, sind die Ergebnisse nicht definiert.
Wenn die Klasse vom Typ
union
ist, sind Zeiger auf unterschiedliche Datenelemente in dieserunion
beim Vergleich gleich.
Wenn zwei Zeiger auf Elemente desselben Arrays oder auf ein Element über das Ende des Arrays hinaus zeigen, erzielt der Zeiger auf das Objekt mit dem höheren Index einen höheren Wert. Der Vergleich von Zeigern ist nur dann garantiert gültig, wenn der Zeiger auf Objekte im gleichen Array oder auf die Position verweist, die eine Stelle nach dem Ende des Arrays liegt.
Siehe auch
Ausdrücke mit binären Operatoren
Integrierte C++-Operatoren, Rangfolge und Assoziativität
C-Operatoren (relational) und C-Gleichheitsoperatoren
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für