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


Преобразование типа


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

преобразование-типа ::= обозначение-типа (выражение)

Целевой тип преобразования типа — это базовый тип обозначения типа. Тип операнда преобразования типа должен быть определимым независимо от контекста (в частности, независимо от целевого- типа). Более того, недопустимо, чтобы операнд преобразования типа был литералом

null,

генератором, агрегатом или строковым литералом; задание в качестве операнда преобразования типа выражения, заключенного в скобки, допускается, только если само выражение является допустимым.

Преобразование к подтипу состоит в преобразовании к целевому типу с последующей проверкой принадлежности результата этому подтипу. Допускается преобразование операнда заданного типа к тому же самому типу.

Другие явные преобразования типов допустимы в следующих трех случаях:

а. Числовые типы.

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

б. Производные типы.

Преобразование допустимо, если целевой тип и тип операнда являются производными один от другого, непосредственно или косвенно, или если существует третий тип, от которого производными являются тип операнда и целевой тип, непосредственно или косвенно.

в. Индексируемые типы.

Преобразование допустимо, если тип операнда и целевой тип — индексируемые типы, которые удовлетворяют следующим условиям: оба типа должны иметь одну и ту же размерность; в каждой позиции индекса типы индексов должны быть либо одинаковыми, либо взаимопреобразуемыми; типы компонент должны быть одинаковыми; наконец, если тип компоненты — тип с дискриминантами или ссылочный тип, то подтипы компонент должны быть оба либо ограниченными, либо неограниченными.




Начало  Назад  Вперед