Явное преобразование типов
В ряде случаев в Pascal происходит автоматический переход от одного типа данных к другому (от целого к действительному, от символьного к строковому и т.д.). Существует также ряд функций, осуществляющих преобразование типов (ord, chr, trunc, round). Наряду с этим в Паскаль возможно явное преобразование типов (ретипизация данных). Для того, чтобы осуществить явное преобразование типа, необходимо использовать имя типа аналогично тому, как используется имя функции. В качестве параметра в этом случае указывается имя преобразуемой переменной.
Преобразовать можно любой тип к любому другому, однако следует выполнять требование: в операторе присваивания переменная слева должна занимать в памяти столько же или больше байт, сколько занимает преобразуемое значение.
Пример задачи, где используется явное преобразование типов
Вычислить значение функции sign(x)=1 при x>0; 0 при x=0; -1 при x<0.
-
var
-
x: real;
-
sign: integer;
-
begin
-
readln(x);
-
sign:=byte(x>0)-byte(x<0);
-
writeln(sign);
-
end.
В программе при положительном значении x выражение x>0 принимает значение true, а выражение x<0 — false. В результате получается, что byte(x>0)=1, byte(x<0)=0, а sign=1. При отрицательном значении x byte(x>0)=0, byte(x<0)=1, sign=-1. При нулевом значении x sign=0.