Имя_типа (Выражение).
Функции приведения типа определены как для стандартных, так и для пользовательских типов. Функции приведения типов могут использоваться как в левой, так и в правой части оператора присваивания, т.к. приведение типа не изменяет внутреннего представления объекта, а изменяет только его интерпретацию.
Type | |||||
Rec = array [1…4] of byte; | |||||
Var A: Rec; L: longint; b: byte; w: word; | |||||
begin | |||||
А [1]: = …; А [2]: =…; А [3]: =…; А[4]: =…; | { инициализация массива } | ||||
L: = LongInt (А); | { приведение типа Rec к типу LongInt в правой части оператора присваивания } | ||||
... | |||||
L: = 123456; | { инициализация переменной L } | ||||
b: = Rec (L) [3]; | { приведение типа LongInt к типу Rec в правой части оператора присваивания } | ||||
Rec (L) [1]: = 10; | { приведение типа LongInt к типу Rec в левой части оператора присваивания } | ||||
... | |||||
w:=word(-6); | { приведение типа Integer к типу Word: w = 65530 (см. 1.1.1) } | ||||
end. | |||||
Преобразование типа изменяет внутреннее представление объектов, т.е. их элементы хранения. При выполнении преобразования к типу большей мощности, у которого размер элемента хранения больше, значения атрибутов объекта будут целиком записаны в младшие байты. Если выполняется преобразование к типу меньшей мощности, от элемента хранения объекта берутся только младшие байты. Таким образом, в результате преобразования типа длина внутреннего представления объекта может как увеличиться, так и уменьшиться.
|
|
Преобразование типа может быть явным, неявным и автоопределенным. Неявное преобразование возможно в выражениях, составленных из вещественных и целочисленных переменных, переменные типа INTEGER автоматически преобразуются к типу REAL, и все выражение в целом приобретает вещественный тип. Явные преобразования связаны с использованием специальных функций преобразования, определенных в языке, аргументы которых принадлежат одному типу, а значения - другому.
function Chr (X: byte): char; | { возвращает символ с заданным порядковым номером X } |
function Ord (X: любой порядковый тип): longint; | { возвращает порядковый номер, соответ- ствующий значению X порядкового типа } |
function Odd (X: любой порядковый тип): boolean; | { проверяет, является ли аргумент нечетным числом } |
function Round (R: real): longint; | { округляет значение R вещественного типа до ближайшего целого } |
function Trunc (R: real): longint; | { усекает значение вещественного типа путем отбрасывания дробной части } |
function Hi (X: word): byte; | { возвращает старший байт аргумента X } |
function Lo (X: word): byte; | { возвращает младший байт аргумента X } |
Автоопределенное преобразование связано с использованием только в правой части оператора присваивания функций преобразования вида: