Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YAZbIki.doc
Скачиваний:
8
Добавлен:
16.03.2015
Размер:
758.78 Кб
Скачать

5.5. Операции сдвига

Выражения с операциями сдвига << и >> группируются слева направо. Обе выполняют обычные арифметические преобразования операндов, каждый из которых должен быть целочисленным. Затем правый операнд преобразуется к типу int; тип результата совпадает с типом левого операнда. Результат не определен, если правый операнд отрицателен либо больше или равен размеру (в битах) левого операнда.

выражение_сдвига:

выражение << выражение

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

Значение выражения E1<<E2 есть E1 (рассматриваемое как набор бит), сдвинутое влево на E2 бит. Oсвободившиеся биты заполняются нулями. Значение выражения E1>>E2 есть E1, сдвинутое вправо на E2 бит. Гарантируется, что правый сдвиг будет логическим (с заполнением нулями), если E1 беззнаковое, в ином случае сдвиг может оказаться арифметическим.

5.6. Операции отношения

Выражения с операциями отношения группируются слева направо.

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

выражение < выражение

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

выражение >= выражение

выражение <= выражение

Операции < (меньше), > (больше), <= (меньше или равно) и >= (больше или равно) дают в результате 1, если указанное отношение истинно, и 0, если ложно. Тип результата - int. Выполняются обычные арифметические преобразования. Можно сравнить два указателя; результат зависит от относительного расположения в адресном пространстве указуемых объектов. Программы, использующие сравнение указателей, мобильны только в случае сравнения указателей на объекты из одного массива.

5.7. Операции равенства

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

выражение == выражение

выражение != выражение

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

Указатель можно сравнить с целым, только если целое - это константа 0. Указатель, которому присвоено значение 0, наверняка не указывает ни на какой объект; он и оказывается равным 0. Общепринято считать такой указатель пустым.

5.8. Побитная операция и

выражение_побитного_и:

выражение & выражение

Операция & ассоциативна, и выражения, содержащие &, могут быть переупорядочены. Выполняются обычные арифметические преобразования. Результат равен побитной функции И от операндов. Операция применима только к операндам целочисленных типов.

5.9. Побитная операция исключающее ИЛИ

выражение_побитного_исключающего_или:

выражение ^ выражение

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

5.10. Побитная операция ИЛИ

выражение_побитного_или:

выражение | выражение

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

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

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

выражение && выражение

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

Операнды не обязаны иметь один и тот же тип, но каждый из них должен иметь базовый тип либо быть указателем. Результат - всегда int.

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

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

выражение || выражение

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

Операнды не обязаны иметь один и тот же тип, но каждый из них должен иметь базовый тип либо быть указателем. Результат - всегда int.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]