Арифметические операции

К арифметическим относятся бинарные операции +, -, *, / для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и - для вещественных и целых чисел. Тип выражения x op y, где op - знак бинарной операции +- или *, определяется из следующей таблицы:

 

  shortint byte smallint word integer longword int64 uint64 BigInteger single real
shortint integer integer integer integer integer int64 int64 uint64 BigInteger single real
byte integer integer integer integer integer longword int64 uint64 BigInteger single real
smallint integer integer integer integer integer int64 int64 uint64 BigInteger single real
word integer integer integer integer integer longword int64 uint64 BigInteger single real
integer integer integer integer integer integer int64 int64 uint64 BigInteger single real
longword int64 longword int64 longword int64 longword uint64 uint64 BigInteger single real
int64 int64 int64 int64 int64 int64 uint64 int64 uint64 BigInteger single real
uint64 uint64 uint64 uint64 uint64 uint64 uint64 uint64 uint64 BigInteger single real
BigInteger BigInteger BigInteger BigInteger BigInteger BigInteger BigInteger BigInteger BigInteger BigInteger - -
single single single single single single single single single - single real
real real real real real real real real real - real real

То есть, если операнды - целые, то результатом является самый короткий целый тип, требуемый для представления всех получаемых значений.

При выполнении бинарной операции с uint64 и знаковым целым результирующим типом будет uint64, при этом может произойти переполнение, не вызывающее исключения.

Для операции / данная таблица исправляется следующим образом: результат деления любого целого на целое имеет тип real.

Для операций div и mod выполняются эти же правила, но операнды могут быть только целыми. Правила вычисления операций div и mod - следующие:

x div y - результат целочисленного деления x на y. Точнее, x div y = x / y, округленное до ближайшего целого по направлению к 0;
x mod y
- остаток от целочисленного деления x на y. Точнее, x mod y = x - (x div y) * y.

Унарная арифметическая операция + для любого целого типа возвращает этот тип. Унарная арифметическая операция - возвращает для целых типов, меньших или равных integer, значение типа integer, для longword и int64 - значение типа int64, к uint64 унарная операция - не применима, для типов single и real - соответственно типы single и real. То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений.