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