Operatory relacyjne: <
, >
, <=
i >=
Składnia
expression < expression
expression > expression
expression <= expression
expression >= expression
Uwagi
Operatory relacyjne binarne określają następujące relacje:
Mniejsze niż (
<
)Większe niż (
>
)Mniejsze niż lub równe (
<=
)Większe niż lub równe (
>=
)
Operatory relacyjne mają skojarzenie od lewej do prawej. Oba operandy operatorów relacyjnych muszą być typu arytmetycznego lub wskaźnika. Dają one wartości typu bool
. Zwracana wartość to false
(0), jeśli relacja w wyrażeniu ma wartość false. W przeciwnym razie zwracana wartość to true
(1).
Przykład
// 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;
}
Wyrażenia w poprzednim przykładzie muszą być ujęte w nawiasy, ponieważ operator wstawiania strumienia (<<
) ma wyższy priorytet niż operatory relacyjne. W związku z tym pierwsze wyrażenie bez nawiasów byłoby oceniane jako:
(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");
Zwykłe konwersje arytmetyczne objęte konwersjami standardowymi są stosowane do operandów typów arytmetycznych.
Porównywanie wskaźników
Gdy dwa wskaźniki do obiektów tego samego typu są porównywane, wynik zależy od lokalizacji obiektów wskazywanych w przestrzeni adresowej programu. Wskaźniki można również porównać z wyrażeniem stałym, które daje w wyniku wartość 0 lub wskaźnik typu void *
. Jeśli porównanie wskaźnika jest wykonywane względem wskaźnika typu void *
, drugi wskaźnik jest niejawnie konwertowany na typ void *
. Następnie dokonywane jest porównanie.
Nie można porównać dwóch wskaźników różnego typu, chyba że:
Jeden typ to typ klasy pochodzącej z drugiego typu.
Co najmniej jeden wskaźnik jest jawnie konwertowany (rzutowany) na typ
void *
. (Drugi wskaźnik jest niejawnie konwertowany na typvoid *
konwersji).
Wynik porównania dwóch wskaźników tego samego typu, które wskazują ten sam obiekt zawsze będzie równy. Jeżeli porównywane są dwa wskaźniki do niestatycznych elementów członkowskich obiektu, obowiązują następujące zasady:
Jeśli typ klasy nie jest wartością
union
, a jeśli dwa elementy członkowskie nie są oddzielone przez specyfikator dostępu, taki jakpublic
,protected
lubprivate
, wskaźnik do zadeklarowanego ostatnio elementu członkowskiego będzie porównywany większy niż wskaźnik do zadeklarowanego wcześniej elementu członkowskiego.Jeśli dwa elementy członkowskie są oddzielone specyfikatorem dostępu, wyniki są niezdefiniowane.
Jeśli typ klasy to
union
, wskaźniki do różnych składowych danych w tymunion
porównaniu są równe.
Jeśli dwa wskaźniki wskazują elementy tej samej tablicy lub na pierwszy element poza tablicą, wskaźnik do obiektu z wyższym indeksem dolnym daje większy wynik porównania. Porównanie wskaźników jest gwarantowane jako prawidłowe tylko wtedy, gdy wskaźniki dotyczą obiektów w jednej tablicy lub do pierwszej lokalizacji poza tablicą.
Zobacz też
Wyrażenia z operatorami dwuargumentowymi
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Operatory relacyjne i porównania języka C
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla