PascalABC.NET

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