Операционная система UNIX. Руководство программиста

     

Аддитивные операции


Выражения с аддитивными операциями + и - группируются слева направо. Выполняются обычные арифметические преобразования. Для каждой из операций допустимы и некоторые дополнительные типы операндов.

аддитивное_выражение: выражение + выражение выражение - выражение

Результат операции + равен сумме ее операндов. Можно складывать указатель на объект в массиве и значение любого целочисленного типа. Последнее во всех случаях преобразуется в адресный сдвиг умножением на размер указуемого объекта. Результатом является указатель того же типа, что и первоначальный, указывающий на другой объект в том же массиве, соответствующим образом сдвинутый относительно первоначального объекта. Так, если P - указатель на объект в массиве, то выражение P+1 - это указатель на следующий объект в массиве. Никакие другие комбинации с исполь- зованием указательных типов недопустимы.

Операция + ассоциативна, и выражения, состоящие из нескольких слагаемых, могут быть переупорядочены компилятором.

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

При вычислении разности двух указателей на объекты одного типа результат преобразуется (делением на размер объекта данного типа) к типу int; полученное значение есть число объектов между указуемыми точками. В общем случае это преобразование дает неожиданный результат, если только указатели не соответствуют одному массиву, поскольку указатели, даже для объектов одного типа, не обязательно различаются на число, кратное размеру объекта.



Содержание раздела