Книга: Язык программирования Си. Издание 3-е, исправленное
A7.9. Операторы отношения
A7.9. Операторы отношения
Операторы отношения выполняются слева направо, однако это свойство едва ли может оказаться полезным: согласно грамматике языка выражение a < b < c трактуется так же, как (a < b) < c, а результат вычисления a < b может быть только 0 или 1.
выражение-отношения:
сдвиговое-выражение
выражение-отношения < сдвиговое-выражение
выражение-отношения > сдвиговое-выражение
выражение-отношения <= сдвиговое-выражение
выражение-отношения >= сдвиговое-выражение
Операторы: < (меньше), > (больше), <= (меньше или равно) и >= (больше или равно) - все выдают 0, если специфицируемое отношение ложно, и 1, если оно истинно. Тип результата - int. Над арифметическими операндами выполняются обычные арифметические преобразования. Можно сравнивать указатели на объекты одного и того же типа (без учета квалификаторов); результат будет зависеть от относительного расположения в памяти. Допускается, однако, сравнение указателей на разные части одного и того же объекта: если два указателя указывают на один и тот же простой объект, то они равны; если они указывают на элементы одной структуры, то указатель на элемент с более поздним объявлением в структуре больше; если указатели указывают на элементы одного и того же объединения, то они равны; если указатели указывают на элементы некоторого массива, то сравнение этих указателей эквивалентно сравнению их индексов. Если p указывает на последний элемент массива, то p+1 больше, чем p, хотя p+1 указывает за границы массива. В остальных случаях результат сравнения не определен.
Эти правила несколько ослабили ограничения, установленные в первой редакции языка. Они позволяют сравнивать указатели на различные элементы структуры и объединения и легализуют сравнение с указателем на место, которое расположено непосредственно за концом массива.
- A7.1. Генерация указателя
- A7.2. Первичные выражения
- A7.3. Постфиксные выражения
- А7.4. Унарные операторы
- A7.5. Оператор приведения типа
- A7.6. Мультипликативные операторы
- A7.7. Аддитивные операторы
- A7.8. Операторы сдвига
- A7.9. Операторы отношения
- A7.10. Операторы равенства
- A7.11. Оператор побитового И
- A7.12. Оператор побитового исключающего ИЛИ
- A7.13. Оператор побитового ИЛИ
- A7.14. Оператор логического И
- A7.15. Оператор логического ИЛИ
- А7.16. Условный оператор
- A7.17. Выражения присваивания
- A7.18. Оператор запятая
- A7.19. Константные выражения