Арифметические операции
Арифметические операции
К арифметическим относятся бинарные операции +, -, *, / для вещественных и целых чисел, бинарные операции 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. То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений.