Совместимость типов
Совместимость типов необходима, чтобы:
- операции могли быть выполнены,
- при исполнении не возникали бы ошибки.
Идентичность
Этот уровень соответствия типов должен соблюдаться между формальными и фактическими параметрами процедур и функций. Типы Т1 и Т2 идентичны, если:
- имеют один и тот же идентификатор типа,
- один объявлен эквивалентным другому.
Пример
Type
T1=boolean;
T2=T1;
Совместимость типов для сравнений
Этот уровень соответствия типов должен соблюдаться в выражениях и операциях сравнения. Типы Т1 и Т2 совместимы, если:
- Т1 и Т2 идентичны,
- Т1 и Т2 вещественные типы,
- Т1 и Т2 целые типы,
- один тип представляет собой тип-диапазон другого,
- оба типа являются типами-диапазонами какого-то одного типа,
- оба являются типами-множествами с совместимыми базовыми типами,
- один тип строка, другой символ,
- один стандартный ссылочный тип Pointer, другой любой ссылочный тип,
- T1 и T2 – процедурные типы с одинаковым количеством попарно эквивалентных параметров и с эквивалентными типами результатов (для функций).
Совместимость типов для присваивания
Надо, чтобы при присваивании значение сохранялось. Присваивание объекта типа Т2 объекту типа Т1 возможно, если:
- Т1 и Т2 идентичны и не файловые типы,
- Т1 и Т2 совместимы и значение Т2 допустимо для Т1,
- Т1 вещественный, а Т2 целый тип,
- T1 строковый а, T2 – символьный тип,
- T1 и T2 совместимые множественные типы и все значения T2 укладываются в T1,
- T1 и T2 совместимые ссылочные типы,
- T1 и T2 совместимые процедурные типы.