Справочное руководство по C++ | страница 28



Два указателя на один и тот же объект считаются равными. Если два указателя настроены на нестатические члены одного объекта, то указатель, настроенный на член, описанный позднее, считается большим, при условии, что члены не имеют разных спецификаций указатель-доступа (§R.11.1), а класс не является объединением. Если два указателя настроены на нестатические члены одного объекта и спецификации указателей-доступа (§R.11.1) этих членов различны, результат будет не определен. Если два указателя настроены на члены (данные) одного и того же объединения, они считаются равными. Если два указателя настроены на элементы одного массива или смотрят за границу массива, то указатель, настроенный на элемент с большим индексом, будет большим. Все другие сравнения указателей определяются реализацией.

R.5.10 Операции сравнения на равенство

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

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

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

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

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

Кроме этого, можно сравнивать указатели на члены одного типа. Производятся преобразования указателя на член (§R.4.8). Указатель на член можно сравнить с выражением-константой, которое дает результат 0.

R.5.11 Поразрядная операция И

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

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

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

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

R.5.12 Поразрядная (исключающая) операция ИЛИ

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

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

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

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

R.5.13 Поразрядная (включающая) операция ИЛИ

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

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

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

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

R.5.14 Логическая операция И

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

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

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

Операции && выполняются слева направо. Такая операция дает результат 1, если оба операнда ее отличны от нуля, иначе результат - 0. В отличие от & при операции && гарантируется вычисление слева направо, более того, второй операнд не вычисляется, если первый операнд равен 0.