36
5.2. Операции
MultiplicativeOp =
'*' | '/' | 'div' | 'mod' | 'and' | '&'.
Когда порядок их выполнения не указан явным образом при помощи скобок,
подразумевается следующий приоритет операций (дается по убывающему
приоритету):
*
1) логическое отрицание
(not)
*
2) мультипликативные операции 
(*, /, div, mod, and, &)
*
3) аддитивные операции 
(+, -, or, xor, |)
*
4) операции отношений 
(=, <>, <, <=, >, >=, in)
Последовательность операций с одинаковым приоритетом выполняется слева
направо. Но порядок вычисления операндов не фиксирован, т.е. возможно, чтобы
сначала будет вычислен правый (а не левый) операнд данной операции. Только
вычисление операндов логических операций AND и OR всегда начинается с левого
операнда и, если его значением определяется результат, правый операнд не
вычисляется.
5.2.1. Арифметические операции
Арифметические операции выполняются над целыми или вещественными
операндами и порождают целый или вещественный результат.
Унарные арифметические операции (знаки):
Операция
Действие
Тип операнда
Тип результата
   +
тождественное
Integer или Real
тип операнда
   -
изменение знака  Integer или Real
тип операнда
Бинарные арифметические операции:
Операция
Действие
Тип операндов
Тип результата
    *
умножение
Integer или Real
Integer или Real
    /
деление
Integer или Real
Real
 div
деление
Integer 
Integer
 mod
остаток
Integer 
Integer
    +
сложение
Integer или Real
Integer или Real
    -
вычитание
Integer или Real
Integer или Real
ПРИМЕЧАНИЯ:
*
символы '+', '-', '*' применяются и для обозначения операций над
множествами;
*
здесь Integer обозначает все разновидности целого типа: Integer, ShortInt,
Cardinal, Natural, ShortCard, LongInt.
Если оба операнда одного и того-же типа, то результат тоже этого типа. Если
типы операндов различаются, тогда результат будет наименьшего типа, включающего
значения типов операндов.
Например: Если тип одного из операндов ShortInt, а тип другого - Natural, то тип
результата будет Integer, потому что оба типа являются его диапазонами.
Если в случае целочисленных операций оба операнда и верный результат
находятся в диапазоне Min(LongInt)..Max(LongInt), то получается правильный результат.
Но результат выражения зависит еще от типа переменной, которой он присваивается.
Если результат выходит за границами ее типа, то ей присваивается неверное значение.
Чтобы этого не получалось, необходимо знать ожидаемый результат вычисления
выражения.
<<  <  GO  >  >>

Вернуться к началу сайта