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