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

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

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