При присваивании значений переменным, вычислении значений выражений, согласовании фактических и формальных параметров процедур и функций необходимо учитывать совместимость типов используемых в них данных.
Важно запомнить следующие простые правила.
Во всех случаях два типа совместимы, если:
· они оба одного типа;
· оба вещественные или оба целые;
· оба – строки;
· один строка, а другой – символ;
· один тип представлен интервалом второго типа;
· оба представлены интервалами одного и того же базового типа;
· оба – подмножества одного и того же базового типа;
· оба – процедурные типы с одинаковым количеством и типом соответствующих параметров, а для функции – и типом результата.
Кроме того, в операторах присваивания тип переменной (т1) и тип результата (т2) считаются совместимыми, если:
· они одни и те же;
· они совместимые порядковые и т2 представлен интервалом т1;
· они вещественные и т2 представлен интервалом т1;
· т1 – вещественный, а тип т2 – целый;
· т1 – строка, а тип т2– строка или символ;
· оба – совместимые множества, причем все элементы т2 принадлежат множеству возможных значений т1;
· т1 и т2 – совместимые процедурные типы.
Допускаются преобразования данных одного типа в данные другого типа. Они могут быть:
- явными, осуществляемыми в программе реально записанными специальными встроенными функциями CHR,ORD,TRUNC и ROUND, в которых аргумент и результат принадлежат разным типам.
- неявными, осуществляемыми:
1. в выражениях, где предварительно вещественные и целые данные преобразуются в вещественный тип, и в результате формируется результат вещественного типа;
2. в случае, когда происходит наложение данных разного типа на одну и ту же область оперативной памяти (например, в записях с вариантной частью).
Примечание: чтобы избежать появление в программе возможных,