Udostępnij za pośrednictwem


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 typ void * 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 jak public, protectedlub private, 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 tym union 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