Реляционные операторы: <
, >
, <=
и >=
Синтаксис
expression < expression
expression > expression
expression <= expression
expression >= expression
Замечания
Бинарные операторы отношения определяют следующие отношения:
Меньше (
<
)Знак "больше" (
>
)Меньше или равно (
<=
)Больше или равно (
>=
)
Операторы отношения обладают ассоциативностью слева направо. Оба операнда операторов отношения должны быть арифметического типа или типа указателя. Они дают значения типа bool
. Возвращаемое значение равно false
(0), если связь в выражении имеет значение false; в противном случае возвращаемое значение равно true
(1).
Пример
// 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;
}
Выражения в предыдущем примере должны быть заключены в скобки, так как оператор вставки потока (<<
) имеет более высокий приоритет, чем реляционные операторы. Поэтому первое выражение без скобок вычислялось бы следующим образом:
(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");
Обычные арифметические преобразования, описанные в стандартных преобразованиях , применяются к операндам арифметических типов.
Сравнение указателей
При сравнении двух указателей на объекты одного типа результат определяется расположением объектов, указываемых в адресном пространстве программы. Указатели также можно сравнить с константным выражением, которое оценивается как 0, так и с указателем типа void *
. Если сравнение указателя выполняется с указателем типа void *
, другой указатель неявно преобразуется в тип void *
. Затем выполняется сравнение.
Два указателя разных типов можно сравнивать, только если выполняются следующие условия.
Один тип является типом класса, производным от другого типа.
По крайней мере один из указателей явно преобразуется (приведение) в тип
void *
. (Другой указатель неявно преобразуется в типvoid *
для преобразования.)
Гарантируется, что два указателя одного типа, указывающие на один и тот же объект, равны. Если сравнивается два указателя на нестатические члены объекта, применяются следующие правила.
Если тип класса не
union
является типом , и если два члена не разделены описателем доступа, напримерpublic
,protected
илиprivate
, указатель на элемент, объявленный последним, будет сравнивать больше указателя на элемент, объявленный ранее.Если два члена разделены описательом доступа, результаты не определены.
Если тип класса является типом
union
, указатель на разные члены данных в том же сравненииunion
.
Если два указателя указывают на элементы одного массива или на элемент, находящийся за пределами массива, большим является указатель на объект с более высоким нижним индексом. Сравнение указателей гарантированно является допустимым, только если указатели ссылаются на объекты в одном массиве или на расположение объекта после конца массива.
См. также
Выражения с бинарными операторами
Операторы C++, приоритет и ассоциативность
Операторы отношения и равенства C
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по