Язык программирования C

Скачать в pdf «Язык программирования C»
А.7.9. Операции отношения (сравнения)


Операции отношения группируются слева направо, но это свойство малополезно; согласно грамматике языка выражение а < b < с воспринимается как (а < Ь) < с, а результат вычисления а < Ь может быть равен только 0 или 1.


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


выражение-со — сдвигом


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


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


■    если два указателя указывают на один и тот же простой объект, то они равны;


■    если они указывают на элементы одной структуры, то указатель на элемент с более поздним объявлением в структуре — больше;


■    если указатели указывают на элементы одного и того же объединения, то они равны;


■    если указатели указывают на элементы некоторого массива, то сравнение этих указателей эквивалентно сравнению соответствующих индексов.


Если Р указывает на последний элемент массива, то Р+1 больше, чем Р, хотя Р+1 указывает за границы массива. В остальных случаях результат сравнения не определен.


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

Скачать в pdf «Язык программирования C»