Описание языка «PascalABC.NET».

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

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