Навигация
Оглавление
Оператор присваивания
Оператор присваивания (:=) вычисляет выражение, заданное в его правой части, и присваивает результат переменной, идентификатор которой расположен в левой части. Например:

X := 4;
Y := 6;
Z := (X + Y) / 2;

Во избежании ошибок присваивания необходимо следить, чтобы тип выражения был совместим с типом переменной. Под совместимостью типов данных понимается возможность автоматического преобразования значений одного типа данных в значения другого типа данных. Например, все целочисленные типы данных совместимы с вещественными (но не наоборот!).

В общем случае для числовых типов данных действует следующее правило: выражение с более узким диапазоном возможных значений можно присвоить переменной с более широким диапазоном значений. Например, выражение с типом данных Byte можно присвоить переменной с типом данных Integer, а выражение с типом данных Integer можно присвоить переменной с типом данных Real. В таких случаях преобразование данных из одного представления в другое выполняется автоматически:

var
B: Byte;
I: Integer;
R: Real;
begin
B := 255;
I := B + 1; // I = 256
R := I + 0.1; // R = 256.1
I := R; // Ошибка! Типы данных несовместимы по присваиванию
end.

Исключение составляет случай, когда выражение принадлежит 32-разрядному целочисленному типу данных (например, Integer), а переменная - 64-разрядному целочисленному типу данных Int64. Для того, чтобы на 32-разрядных процессорах семейства x86 вычисление выражения происходило правильно, необходимо выполнить явное преобразование одного из операндов выражения к типу данных Int64. Следующий пример поясняет сказанное:

var
I: Integer;
J: Int64;
begin
I := MaxInt; // I = 2147483647 (максимальное целое)
J := I + 1; // J = -2147483648 (неправильно: ошибка переполнения!)
J := Int64(I) + 1; // J = 2147483648 (правильно: вычисления в формате Int64)
end.


 

Сайт создан в системе uCoz