Operadores relacionais: <
, >
, <=
e >=
Sintaxe
expression < expression
expression > expression
expression <= expression
expression >= expression
Comentários
Os operadores relacionais binários determinam as seguintes relações:
Menor que (
<
)Maior que (
>
)Menor ou igual a (
<=
)Maior ou igual a (
>=
)
Esses operadores relacionais possuem associatividade da esquerda para a direita. Ambos os operandos de operadores relacionais devem ser do tipo aritmético ou de ponteiro. Eles resultam em valores do tipo bool
. O valor retornado é false
(0) se a relação na expressão for falsa; caso contrário, o valor retornado é true
(1).
Exemplo
// 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;
}
As expressões no exemplo anterior devem ser incluídas entre parênteses porque o operador de inserção de fluxo (<<
) tem precedência maior que os operadores relacionais. Portanto, a primeira expressão sem parênteses seria avaliada como:
(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");
As conversões aritméticas usuais cobertas em Conversões padrão são aplicadas aos operandos de tipos aritméticos.
Comparando ponteiros
Quando dois ponteiros para objetos do mesmo tipo são comparados, o resultado é determinado pelo local dos objetos apontados no espaço de endereço do programa. Os ponteiros também podem ser comparados a uma expressão constante que é avaliada como 0 ou a um ponteiro do tipo void *
. Se uma comparação de ponteiros for feita em relação a um ponteiro do tipo void *
, o outro ponteiro será convertido implicitamente no tipo void *
. Então, a comparação será feita.
Dois ponteiros de tipos diferentes não podem ser comparados, a menos que:
Um tipo é um tipo de classe derivado de outro tipo.
Pelo menos um dos ponteiros é convertido explicitamente (conversão) no tipo
void *
. (O outro ponteiro é implicitamente convertido no tipovoid *
para a conversão.)
Dois ponteiros do mesmo tipo que apontam para o mesmo objeto são obrigatoriamente comparados como iguais. Se dois ponteiros para membros não estáticos de um objeto são comparados, as seguintes regras se aplicam:
Se o tipo de classe não é uma
union
e se os dois membros não são separados por um access-specifier, comopublic
,protected
ouprivate
, o ponteiro para o membro declarado por último será comparado como maior do que o ponteiro para o membro declarado anteriormente.Se os dois membros são separados por um access-specifier, os resultados são indefinidos.
Se o tipo de classe for uma
union
, os ponteiros para membros de dados diferentes nessaunion
serão comparados como iguais.
Se dois ponteiros apontarem para elementos da mesma matriz ou para o elemento além do final da matriz, o ponteiro para o objeto com o subscrito mais alto será comparado como superior. A comparação dos ponteiros é garantida como válida somente quando os ponteiros se referem a objetos na mesma matriz ou ao local após o término da matriz.
Confira também
Expressões com operadores binários
Operadores internos C++, precedência e associatividade
Operadores relacionais e de igualdade C
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de