Тождественность и совместимость типов
Для выполнения программы с величинами различного типа требуется правильно применять понятия тождественности и совместимости типов данных, участвующих в операциях. Два типа являются тождественными, если они описаны вместе или если их определения используют один и тот же идентификатор типа.
Пример 3.17. Описание тождественных и нетождественных типов
Type
аl, а2 = array[1..10] ofbyte; (al, a2 - тождественные типы}
t = set of byte;
f = set of integer; {f, t — нетождественные типы}
или
var
a, t, pr: integer;
Тождественность типов требуется только для переменных фактических и формальных параметров при вызове процедур и функций. Совместимость типов играет важнейшую роль в выражениях, операциях сравнения и в операторах присваивания. Понятие совместимости типов означает, что типы равны друг другу или один из них может быть автоматически преобразован к другому.
Воперациях сравнения два типа являются совместимыми при соблюдении хотя бы одно из условий:
q оба типа являются одинаковыми
q оба типа являются вещественными
q оба типа являются целочисленными
q один тип входит в диапазон другого
q оба типа входят в диапазон одного и того же основного типа
q оба типа являются множественными типами с совместимыми базовыми
типами
q оба типа являются строковыми с одинаковым числом компонентов
q один тип является строковым, а другой тип - строковым или символьным
qодин тип является указателем, а другой - любым типом указателей.
Пример 3.18.Совместимые и несовместимые типы данных
'a' > 'b' {Допустимо, так как оба значения относятся к типу char};
'a'>5 {Ошибка, так как сравниваемые значения имеют разные типы}.
В операциях присваивания два типа являются совместимыми при соблюдении хотя бы одно из следующих условий:
q оба типа тождественны и ни один из них не является файловым или структурным типом, содержащим компоненты с файловым типом на одном из своих уровней
q оба типа являются совместимыми простыми типами, и значения второго типа попадают в диапазон возможных значений первого
q оба типа относятся к вещественным типам, и значения второго типа
попадает в диапазон возможных значений первого
q первый тип является вещественным, а второй - целочисленным
q оба типа являются строковыми
q первый тип является строковым, а второй - литерным
q оба типа относятся к совместимым множественным типам, и все члены
значений второго типа попадают в диапазон возможных значений первого типа
q оба типа относятся к совместимым типам "указатель".
Пример 3.19.Совместимость типов
Var
a, b: integer;
c:=real;
Begin
a:= b; {правильно}
c:= b; {правильно}
a:= c; {ошибка}
End.
Дата добавления: 2015-01-13; просмотров: 1149;