Руководство по языку B.Pascal 7

       

Порядок вычисления


Стандартами Паскаля допускается, что операнды в выражении

часто вычисляются в порядке, отличном от того, в котором они за- писаны (слева направо). Например, оператор:

I := F(J) div G(J)

где F и G - функции целого типа, приводит к тому, что G вычисля- ется перед вычислением F, так как это позволяет компилятору полу- чить более оптимальный объектный код. Важно, поэтому, чтобы выра- жение никогда не зависело от какого-то конкретного порядка вычисления встроенных функций. Если вернуться к предыдущему при- меру, то для того, чтобы вызвать функцию F перед функцией G, мож- но использовать временную переменную:

T := F(J); I := T div G(J);

Исключением из этого правила является вычисление по короткой схеме (разрешенное директивой компилятора {$B-}, при котором опе- ранды булевского типа, связанные операциями and или оr, всегда вычисляются слева направо.



Содержание раздела