пу;
Обидва типу є типами - множинами з сумісними базовими типами;
Один тип є рядком, а інший - символом або рядком.
Сумісність для присвоювання.
Ця сумісність необхідна, коли значення якогось вираження присвоюється змінної, типізованої константі або функції. Якщо значення об'єкта типу Т2 присвоюється об'єкту типу Т1, то це можливо в наступних випадках:
Т1 і Т2 - ідентичні типи і не є файловими типами або структурованими типами, що містять компоненти файлового типу на будь-якому рівні структурованості;
Т1 і Т2 - сумісні порядкові типи і значення типу Т2 знаходиться в межах можливих значень об'єкту типу Т1;
Т1 і Т2 - речові типи і значення типу Т2 знаходиться в межах можливих значень об'єкту типу Т1;
Т1 - Дійсний тип, а Т2 - цілий;
Т1 і Т2 - рядки;
Т1 - Рядок, а Т2 - символ;
Т1 і Т2 - сумісні типи - множини і всі компоненти значення типу Т2 знаходяться в безлічі Т1.
Перетворення типів у Паскалі може бути явним і неявним. При явному перетворенні типів використовуються виклики спеціальних функцій Ord, Trunc, Round, Chr, Ptr (Перетворює четирехбайтний цілочисельний аргумент до типу-вказівником), аргументи яких належать одному типу, а результат іншому.
Перетворення може досягатися застосуванням ідентифікатора (імені) стандартного типу, або певного користувачем типу, в якості ідентифікатора функції перетворення до вираження преутвореного типу (так зване автовизначення перетворення типів). Наприклад, припустимі наступні виклики функцій:
Type Mytype = (A, B, C, D);
. . . . . . . . . . . . . . . . . p> Mytype (2);
Integer (D);
Pointer (Longint (A) + $ FF);
Char (127 Mod C);
Byte (K);
При Автовизначення перетворенні типу виразу може відбутися зміна довжини його внутрішнього представлення (зменшення або збільшення). p> У Турбо-Паскалі є ще один явний спосіб: в ту область пам'яті, яку займає мінлива деякого типу, можна помістити значення виразу іншого типу, якщо тільки довжина внутрішнього подання знову розміщується значення в точності дорівнює довжині внутрішнього подання змінної. З цією метою знову використовується автовизначення функція перетворення типів, але вже в лівій частині оператора привласнення:
Type
Byt = Array [1 .. 2] Of Byte;
Int = Array [1 .. 2] Of Integer;
Rec = Record
X: Integer;
Y: Integer;
End;
Var
VByt: Byt;
VInt: Int;
VRec: Rec;
Begin
Byt (VInt [1]) [2]: = 0;
Int (VRec) [1]: = 256;
End.
Дані одного типу можуть автоматично (неявно) перетворюватися в дані іншого типу перед виконанням операцій виразів. p> Неявне перетворення типів можливо тільки в двох випадках:
• вираз з цілих і речових приводиться до речових
• одна і та ж область пам'яті трактується попер...