Операторы отношения и равенства C
Операторы отношения и равенства сравнивают свои первые и вторые операнды для проверки истинности указанного отношения. Результатом реляционного выражения является 1, если проверенная связь имеет значение true, и 0, если значение false. Результат имеет тип int
.
Синтаксис
relational-expression
:
shift-expression
relational-expression
<
shift-expression
relational-expression
>
shift-expression
relational-expression
<=
shift-expression
relational-expression
>=
shift-expression
equality-expression
:
relational-expression
equality-expression
==
relational-expression
equality-expression
!=
relational-expression
Операторы отношения и равенства проверяют следующие отношения.
Оператор | Проверяемое отношение |
---|---|
< |
Первый операнд меньше второго операнда |
> |
Первый операнд больше второго операнда |
<= |
Первый операнд меньше или равен второму операнду |
>= |
Первый операнд больше или равен второму операнду |
== |
Первый операнд равен второму операнду |
!= |
Первый операнд не равен второму операнду |
Первые четыре оператора в списке имеют более высокий приоритет, чем операторы равенства (==
и !=
). Сведения о приоритетах приведены в таблице Приоритет и ассоциативность операторов C.
Операнды могут быть целыми числами, числами с плавающей запятой или указателями. Типы операндов могут быть разными. Операторы отношения выполняют обычные арифметические преобразования с операндами целого типа и типа с плавающей запятой. Кроме того, с операторами отношения и равенства можно использовать следующие сочетания типов операндов:
Оба операнда любого оператора отношения или равенства могут быть указателями на один и тот же тип. Для операторов равенства (
==
) и неравенства (!=
) результат сравнения показывает, указывают ли оба указателя на один и тот же адрес в памяти. Для других реляционных операторов (<
,>
,<=
и>=
) результат сравнения указывает относительное положение двух адресов памяти объектов, на которые указывает. Операторы отношения сравнивают только смещения.Сравнение указателей определено только для частей одного и того же объекта. Если указатели относятся к элементам массива, сравнение аналогично сравнению соответствующих индексов. Адрес первого элемента массива "меньше" адреса последнего элемента. Для структур указатели на члены структуры, объявленные позже, являются указателями "больше" на элементы, объявленные ранее в структуре. Указатели на члены одного объединения эквивалентны.
Значение указателя можно сравнивать с постоянным значением 0 на равенство (
==
) или неравенство (!=
). Указатель со значением 0 называется указателем null; то есть он не указывает на допустимое расположение в памяти.Операторы равенства следуют тем же правилам, что и реляционные операторы, но дают больше возможностей: указатель можно сравнить с константным целочисленным выражением со значением 0 или с указателем на
void
. Два указателя "null" при сравнении считаются равными. Операторы равенства сравнивают как сегмент, так и смещение.
Примеры
Эти примеры иллюстрируют реляционные операторы и операторы равенства.
int x = 0, y = 0;
if ( x < y )
Поскольку x
и y
равны, выражение в этом примере возвращает значение 0.
char array[10];
char *p;
for ( p = array; p < &array[10]; p++ )
*p = '\0';
Фрагмент в этом примере задает для каждого элемента массива array
постоянное символьное значение null.
enum color { red, white, green } col;
.
.
.
if ( col == red )
.
.
.
Эти операторы объявляют переменную перечисления с именем col
и тегом color
. В любой момент переменная может содержать целочисленное значение 0, 1 или 2, представляющее один из элементов набора color
перечисления: цвет red
, white
или green
соответственно. Если переменная col
содержит значение 0 при выполнении оператора if
, будут выполнены все операторы, зависящие от этого оператора if
.
См. также
Реляционные операторы: <
, >
, <=
и >=
Операторы равенства: ==
и !=
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по