Стандартами Паскаля допускается, что операнды в выражении
часто вычисляются в порядке, отличном от того, в котором они за-
писаны (слева направо). Например, оператор:
I := F(J) div G(J)
где F и G - функции целого типа, приводит к тому, что G вычисля-
ется перед вычислением F, так как это позволяет компилятору полу-
чить более оптимальный объектный код. Важно, поэтому, чтобы выра-
жение никогда не зависело от какого-то конкретного порядка
вычисления встроенных функций. Если вернуться к предыдущему при-
меру, то для того, чтобы вызвать функцию F перед функцией G, мож-
но использовать временную переменную:
T := F(J);
I := T div G(J);
Исключением из этого правила является вычисление по короткой
схеме (разрешенное директивой компилятора {$B-}, при котором опе-
ранды булевского типа, связанные операциями and или оr, всегда
вычисляются слева направо.