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

We use cookies. Read the Privacy and Cookie Policy

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

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

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

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

Никакие другие комбинации типов для указателей не допутимы.

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

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

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