Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

4.5.3 Бинарные операторы сложения

Статическая семантика

Бинарные операторы сложения + (сложение) и – (вычитание) определены для каждого числового типа T с их стандартным значением. Они имеют следующие спецификации:
function "+"(Left, Right : T) return T
function "-"(Left, Right : T) return T
Операторы конкатенации & определены для каждого нелимитированного одномерного массива типа T с типом компонента C. Они имеют следующие спецификации:
function "&"(Left : T; Right : T) return T
function "&"(Left : T; Right : C) return T
function "&"(Left : C; Right : T) return T
function "&"(Left : C; Right : C) return T

Динамическая семантика

При вычислении конкатенации с типом результата T, если оба операнда имеют тип T, результат конкатенации — это одномерный массив, длина которого равна сумме длин операндов, а компоненты включают компоненты левого операнда, за которыми следуют компоненты правого операнда. Если левый операнд — массив NULL, результат конкатенации — правый операнд. В противном случае нижняя граница результата определяется следующим образом:
  • Если конечный предок типа массива был определен с помощью constrained_array_definition, то нижняя граница результата — это нижняя граница типа индекса;
  • Если конечный предок типа массива был определен с помощью unconstrained_array_definition, то нижняя граница результата — это нижняя граница левого операнда.
Верхняя граница определяется нижней границей и длиной. Проверяется, что верхняя граница результата конкатенации принадлежит диапазону типа индекса, если результат не является массивом NULL. Если эта проверка не пройдена, генерируется исключение Constraint_Error.
Если какой-либо из операндов имеет тип компонента C, результат конкатенации определяется вышеуказанными правилами, используя вместо такого операнда массив, содержащий этот операнд в качестве единственного компонента (преобразованного к типу компонента), и имеющий нижнюю границу типа индекса типа массива в качестве своей нижней границы.
Результат конкатенации определяется по отношению к присваиванию анонимному объекту, как и для любого вызова функции (см. 6.5).
ПРИМЕЧАНИЯ
14 Как и для всех предопределенных операторов над модульными типами, бинарные операторы сложения + и – над модульными типами включают конечное приведение по модулю модуля, если результат находится вне базового диапазона типа.

Примеры

Примеры выражений, использующих бинарные операторы сложения:
Z + 0.1 -- Z должен быть вещественного типа
"A" & "BCD" -- конкатенация двух строковых литералов
'A' & "BCD" -- конкатенация символьного литерала и строкового литерала
'A' & 'A' -- конкатенация двух символьных литералов


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API