К арифметическим относятся бинарные операции
+
, -
,
*
, /
для вещественных и целых чисел, бинарные операции
div
и mod
для целых чисел и унарные операции
+
и -
для вещественных и целых чисел. Тип выражения
x
op y
, где
op - знак бинарной операции
+
, -
или *
,
определяется из следующей таблицы:
shortint |
byte |
smallint |
word |
integer |
longword |
int64 |
uint64 |
BigInteger |
single |
real |
decimal |
|
shortint |
integer |
integer |
integer |
integer |
integer |
int64 |
int64 |
uint64 |
BigInteger |
single |
real |
decimal |
byte |
integer |
integer |
integer |
integer |
integer |
longword |
int64 |
uint64 |
BigInteger |
single |
real |
decimal |
smallint |
integer |
integer |
integer |
integer |
integer |
int64 |
int64 |
uint64 |
BigInteger |
single |
real |
decimal |
word |
integer |
integer |
integer |
integer |
integer |
longword |
int64 |
uint64 |
BigInteger |
single |
real |
decimal |
integer |
integer |
integer |
integer |
integer |
integer |
int64 |
int64 |
uint64 |
BigInteger |
single |
real |
decimal |
longword |
int64 |
longword |
int64 |
longword |
int64 |
longword |
uint64 |
uint64 |
BigInteger |
single |
real |
decimal |
int64 |
int64 |
int64 |
int64 |
int64 |
int64 |
uint64 |
int64 |
uint64 |
BigInteger |
single |
real |
decimal |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
BigInteger |
single |
real |
decimal |
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 |
- |
decimal |
decimal |
decimal |
decimal |
decimal |
decimal |
decimal |
decimal |
decimal |
- |
- |
- |
decimal |
То есть, если операнды - целые, то результатом является самый короткий целый тип, требуемый для представления всех получаемых значений.
При выполнении бинарной операции с 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
. То есть так же
результатом является самый короткий тип, требуемый для представления всех
получаемых значений.