* Побитовые операции
* Операции с множествами
* Операция явного приведения типов
* Операции is и as
* Операция new
* Операция @ получения адреса
* Операции с указателями
* Операции 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. То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений.
Логические операции
К логическим относятся бинарные операции 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 не вычисляется.
Побитовые операции
К побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xor будет наименьшим целым, включающим все возможные значения обоих типов операндов. Для shl, shr результирующий тип совпадает с типом левого операнда, для not - с типом операнда.