Operatori relazionali: <
, >
, <=
e >=
Sintassi
expression < expression
expression > expression
expression <= expression
expression >= expression
Osservazioni:
Gli operatori relazionali binari determinano le relazioni seguenti:
Meno di (
<
)Maggiore di (
>
)Minore o uguale a (
<=
)Maggiore o uguale a (
>=
)
Gli operatori relazionali hanno un'associatività da sinistra a destra. Entrambi gli operandi degli operatori relazionali devono essere di tipo aritmetico o di tipo puntatore. Producono valori di tipo bool
. Il valore restituito è false
(0) se la relazione nell'espressione è false; in caso contrario, il valore restituito è true
(1).
Esempio
// 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;
}
Le espressioni nell'esempio precedente devono essere racchiuse tra parentesi perché l'operatore di inserimento del flusso (<<
) ha una precedenza superiore rispetto agli operatori relazionali. Di conseguenza, la prima espressione senza le parentesi verrebbe valutata come:
(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");
Le normali conversioni aritmetiche descritte nelle conversioni standard vengono applicate agli operandi di tipi aritmetici.
Confronto tra puntatori
Quando vengono confrontati due puntatori a oggetti dello stesso tipo, il risultato è determinato dalla posizione degli oggetti puntati nello spazio degli indirizzi del programma. I puntatori possono anche essere confrontati con un'espressione costante che restituisce 0 o a un puntatore di tipo void *
. Se viene eseguito un confronto tra puntatori a un puntatore di tipo void *
, l'altro puntatore viene convertito in modo implicito nel tipo void *
. A questo punto, viene eseguito il confronto.
Non è possibile eseguire il confronto di due puntatori di tipo diverso, tranne nei seguenti casi:
Un tipo è un tipo di classe derivato dall'altro tipo.
Almeno uno dei puntatori viene convertito in modo esplicito (cast) nel tipo
void *
. L'altro puntatore viene convertito in modo implicito nel tipovoid *
per la conversione.
Due puntatori dello stesso tipo che puntano allo stesso oggetto risultano sicuramente uguali. Se due puntatori a membri non statici di un oggetto vengono confrontati, è necessario rispettare le seguenti regole:
Se il tipo di classe non è un
union
e se i due membri non sono separati da un identificatore di accesso, ad esempiopublic
,protected
oprivate
, il puntatore al membro dichiarato per ultimo confronterà maggiore del puntatore al membro dichiarato in precedenza.Se i due membri sono separati da un identificatore di accesso, i risultati non sono definiti.
Se il tipo di classe è un
union
, puntatori a membri di dati diversi in taleunion
confronto è uguale.
Se due puntatori puntano a elementi della stessa matrice o all'elemento uno oltre la fine della matrice, il puntatore all'oggetto con indice maggiore risulta maggiore. Il confronto tra puntatori è sicuramente valido solo quando i puntatori fanno riferimento a oggetti nella stessa matrice o alla posizione uno oltre la fine della matrice.
Vedi anche
Espressioni con operatori binari
Operatori C++, precedenza e associazione
Operatori relazionali e operatori di uguaglianza C
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per