Справочное руководство по языку Ада-83



   Магазин для художников.             

Примечание 3



Примечание

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

Ссылки: вещественный тип 6, возбуждение исключений 11, диапазон подтипа индекса 1, длина массива 2, индексируемый тип 3.6, исключение CONSTRAINT-ERROR 11.1, лимитируемый тип 4, операция 4.5, операция типа 3.3, подтип индекса 3.6, предопределенная операция 4.5, пустой массив 1, размерность 3.6, символьный литерал 2.5, строковый литерал 2.6, тип 3.3, тип компоненты 3.3, числовой тип

4. УНАРНЫЕ АДДИТИВНЫЕ ОПЕРАЦИИ

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

Знак операции

Операция

Тип операнда

Тип результата

+

Сохранение знака

Любой числовой тип

Тот же числовой тип

-

Изменение знака

Любой числовой тип

Тот же числовой тип

Ссылки: операция 4.5, операция типа 3.3, предопределенная операция 4.5, тип 3.3, числовой тип

5. МУЛЬТИПЛИКАТИВНЫЕ ОПЕРАЦИИ

Операции • и / предопределены для любого целого и любого плавающего типа и понимаются в обычном смысле. Операции mod и геm предопределены для любого целого типа. Для каждой из этих операций операнды и результат имеют один и тот же базовый тип. Для плавающих типов точность результата определяется типом операндов (см. 7).

Знак операции

Операция

Тип операнда

Тип

результата

*

Умножение

Любой целый тип

Тот

же целый тип

-

Любой плавающий тип

Тот

же плавающий тип

/

Деление нацело

Любой целый тип

Тот

же целый тип

Деление плавающих

Любой плавающий тип

Тот

же плавающий тип

mod

Вычет по модулю

Любой целый тип

Тот

же целый тип

rem

Остаток

Любой целый тип

Тот

же целый тип

Деление нацело и остаток связаны следующим соотношением:

А = (А/В)*В + (А rem В)

где (А rem В) имеет знак значения А и абсолютное значение, меньшее абсолютного значения В. Деление нацело удовлетворяет следующему тождеству:

(-А)/В = -(А/В) = А/(-В)

Результат операции вычета по модулю таков, что (А mod В) имеет знак значения В и абсолютное значение, меньшее абсолютного значения В, и существует целое значение N такое, что должно удовлетворяться следующее соотношение:

А = В . N + (А mod В)

Для каждого фиксированного типа предопределены операции умножения и деления на операнд предопределенного типа INTEGER.

Знак операции

Операция

Тип левого операнда

Тип правого операнда

Тип результата

*

Умножение

Любой фиксированный ТИП

INTEGER

Тип левого операнда

INTEGER

Любой фиксированный ТИП

Тип правого операнда

/

Деление

Любой фиксированный ТИП

INTEGER

Тип левого операнда

Умножение значения фиксированного типа на целое эквивалентно повторению операции сложения. Деление значения фиксированного типа на целое является приближенным и не меняет типа (см. 7).

Две специальные операции умножения и деления, применимые к операндам любых фиксированных типов, описаны в предопределенном пакете STANDARD (они не могут быть переименованы или даны в качестве фактических параметров настройки).

Знак операции

Операция *

Тип левого операнда

Тип правого операнда

Тип результата

*

Умножение

Любой фиксированный ТИП

Любой фиксированный ТИП

Универсальный- фиксированный ТИП

/

Деление

Любой фиксированный ТИП

Любой фиксированный ТИП

Универсальный - фиксированный ТИП

Операнды умножения могут быть одного и того же или различных фиксированных типов, а тип результата — анонимный предопределенный универсальный-фиксированный тип, дельта которого произвольно мала. Результат любого такого умножения всегда должен быть явно преобразован в значение некоторого числового типа. Это обеспечивает явное управление точностью вычислений. То же относится к делению значения фиксированного типа на значение фиксированного типа. Никакие другие операции для типа универсальный-фиксированный не определены.

Исключение NUMERIC_ERROR возбуждается операциями целого деления rem и mod, если правый операнд равен нулю.









Содержание  Назад  Вперед