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. То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений.
Логические операции
К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Эти операции подчиняются стандартным правилам логики: a and b истинно только тогда, когда истинны a и b, a or b истинно только тогда, когда истинно либо a, либо b, a xor b истинно только тогда, когда только одно из a и b истинно, not a истинно только тогда, когда a ложно.
Выражения с and и or вычисляются по короткой схеме:
в выражении x and y если x ложно, то все выражение ложно, и y не вычисляется;
в выражении x or y если x истинно, то все выражение истинно, и y не вычисляется.
Побитовые операции
К побитовым относятся бинарные операции