В любом выражении ТП требуется совместимость типов. Совместимость типов имеет место, если выполняется хотя бы одно из следующих условий:

1) оба типа являются одинаковыми

2) оба типа являются вещественными типами

3) оба типа являются целочисленными

4) один тип является поддиапазоном другого

5) оба типа являются поддиапазоном одного и того же основного типа

6) оба типа являются типами множеств с совместимыми базовыми типами

7) оба типа являются упакованными строковыми типами с одинаковым числом компонент

8) один тип является строковым, а другой - либо строковым, либо упакованным строковым типом, либо типом Char

9) Один тип - Pointer, а другой - любой тип указателя

10) Оба типа являются процедурными типами с тождественными типами результата, с тождественным числом параметров, с тождественными (один в один) типами параметров.

Совместимость по присваиванию необходима с случае использования оператора присваивания или при передаче значений параметров процедурам или функциям.

Значение типа Т2 является совместимым по присваиванию с типом Т1 (т.е. допустимо Т1:=Т2), если выполняется одно из следующих условий:

1. - Т1 и Т2 являются тождественными типами, и ни один из них не является файловым типом или структурным типом, содержащим компоненту с файловым типом на одном из своих уровней.

2. - Т1 и Т2 являются совместимыми порядковыми типами и значения типа Т2 попадают в диапазон возможных значений Т1.

3. - Т1 и Т2 являются вещественными типами и значения типа Т2 попадают в диапазон возможных значений Т1.

4. - Т1 является вещественным типом, а Т2 является целочисленным типом.

5. - Т1 и Т2 являются строковыми типами.

6. - Т1 является строковым типом, а Т2 является типом Char.

7. - Т1 является строковым типом, а Т2 является упакованным строковым типом.

8. - Т1 и Т2 являются совместимыми упакованными строковыми типами.

9. - Т1 и Т2 являются совместимыми типами множеств, и все значения типа Т2 попадают в диапазон возможных значений Т1.

10.- Т1 и Т2 являются совместимыми типами указателей.

11.- Т1 и Т2 являются совместимыми процедурными типами.

12.- Т1 является процедурным типом, а Т2 является процедурой или функцией с тождественным типом результата, с идентичным числом параметров и тождественностью один-в-один между типами параметров.

13.- Объект типа Т1 совместим по присваиванию с объектом типа Т2, если Т2 находится в области определения Т1.

14.- Указатель типа Р2, указывающий на тип объекта Т2, совместим по присваиванию с указателем типа Р1, указывающим на тип объекта Т1, если Т2 лежит в области определения Т1.

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

<- Вернуться к началу темы | Следующая тема ->
Последнее изменение: Вторник 1 Март 2011, 16:25