Эти правила несколько ослабили ограничения, установленные в первой редакции языка. Они позволяют сравнивать указатели на различные элементы структуры и объединения и легализуют сравнение с указателем на место, которое расположено непосредственно за концом массива.

<p>A7.10. Операторы равенства</p>

выражение-равенства:

    выражение-отношения

    выражение-равенства == выражение-отношения

    выражение-равенства != выражение-отношения

Операторы == (равно) и != (не равно) аналогичны операторам отношения с той лишь разницей, что имеют более низкий приоритет. (Таким образом, a < b == c < d есть 1 тогда и только тогда, когда отношения a < b и c < d или оба истинны, или оба ложны.)

Операторы равенства подчиняются тем же правилам, что и операторы отношения. Кроме того, они дают возможность сравнивать указатель с целочисленным константным выражением, значение которого равно нулю, и с указателем на void (см. A6.6.).

<p>A7.11. Оператор побитового И</p>

И-выражение:

    выражение-равенства

    И-выражение & выражение-равенства

Выполняются обычные арифметические преобразования: результат - побитовое AND операндов. Оператор применяется только к целочисленным операндам.

<p>A7.12. Оператор побитового исключающего ИЛИ</p>

исключающее-ИЛИ-выражение:

    И-выражение

    исключающее-ИЛИ-выражение ^ И-выражение

Выполняются обычные арифметические преобразования; результат - побитовое XOR операндов. Оператор применяется только к целочисленным операндам.

<p>A7.13. Оператор побитового ИЛИ</p>

ИЛИ выражение:

    исключающее-ИЛИ-выражение

    ИЛИ-выражение | исключающее-ИЛИ-выражение

Выполняются обычные арифметические преобразования; результат - побитовое OR операндов. Оператор применяется только к целочисленным операндам.

<p>A7.14. Оператор логического И</p>

логическое-И-выражение:

    ИЛИ-выражение

    логическое-И-выражение && ИЛИ-выражение

Операторы && выполняются слева направо. Оператор && выдает 1, если оба операнда не равны нулю, и 0 в противном случае. В отличие от &, && гарантирует, что вычисления будут проводиться слева направо: вычисляется первый операнд со всеми побочными эффектами; если он равен 0, то значение выражения есть 0. В противном случае вычисляется правый операнд, и, если он ранен 0, то значение выражения есть 0, в противном случае оно равно 1.

Операнды могут принадлежать к разным типам, но при этом каждый из них должен иметь либо арифметический тип, либо быть указателем. Тип результата - int.

<p>A7.15. Оператор логического ИЛИ</p>

логическое-ИЛИ-выражение:

    логическое-И-выражение

    логическое-ИЛИ-выражение || логическое-И-выражение

Операторы || выполняются слева направо. Оператор || выдает 1, если по крайней мере один из операндов не равен нулю, и 0 в противном случае. В отличие от |, оператор || гарантирует, что вычисления будут проводиться слева направо: вычисляется первый операнд, включая все побочные эффекты; если он не равен 0, то значение выражения есть 1. В противном случае вычисляется правый операнд, и если он не равен 0, то значение выражения есть 1, в противном случае оно равно 0.

Операнды могут принадлежать разным типам, но операнд должен иметь либо арифметический тип, либо быть указателем. Тип результата - int.

<p>А7.16. Условный оператор</p>

условное-выражение:

    логическое-ИЛИ-выражение

    логическое-ИЛИ-выражение ? выражение : условное-выражение

Перейти на страницу:

Похожие книги