000118.

## 7.6. Последовательность выполнения операций в выражении.

Последовательность выполнения операций в выражении соответствует порядку записи операторов слева направо. Изменить последовательность выполнения операций с помощью программирования выражений в скобках нельзя, поскольку языком макропрограммирования не предусмотрено использование скобок в выражении.

Выполнение операторов в выражении производится в соответствии с их приоритетом. Те операторы, приоритет которых выше, выполняются первыми.

Операторы, имеющий равный приоритет, выполняются в порядке их записи в выражении слева направо (за исключением оператора передачи управления).

Приоритет операторов возрастает в следующем порядке от низшего к высшему:
- оператор передачи управления,
- арифметические, логические и условные операторы и оператор присвоения,
- операторы-функции.

Если в выражении запрограммировано несколько операторов передачи управления, то выполняется только последний оператор передачи управления. Тип оператора передачи управления влияния на приоритет не оказывает.

Подробнее последовательность выполнения операций рассмотрена в примерах.

Это выражение фактически эквивалентно набору из шести элементарных выражений 1 - 6. То есть, последовательность выполнения операций будет следующая.

Первы выполняется оператор присвоения и параметру #1 присвоится число 2.

Затем выполнится оператор сложения и к величине параметра #1 добавится величина параметра #2, результат останется в параметре #1, то есть присвоение произойдёт неявно.

После чего из содержимого параметра #1 вычтется число 10, результат будет в параметре #1.

Четвёртой операцией будет умножение содержимого параметра #1 на содержимое параметра #3. Результат будет в параметре #1.

Следующей выполнится операция установки четвёртого и второго разрядов в параметре #1 (20 (десятичное) - 10100 (двоичное)). После этого будет вычислен SIN30. Результат деления будет находиться в параметре #1.

Таким образом, в параметре #1 окажется результат выполнения операций, запрограммированных справа от оператора присвоения.

Допустим, параметр
#2 содержит 3.5
#C содержит -5

Результаты выполнения операций в параметре #1:

Из приведённого примера видно, что операторы умножения и деления приоритета над операторами сложения и вычитания не имеют.

Пример:
#66=3.3*#U=RND#66
Такое программирование является правильным.
Последовательность выполнения операций следующая:
Первым выполняется умножение числа 3.3 на содержимое параметра #U.
Затем выполнится первый оператор присвоения и результат умножения присвоится параметру #66. После чего выполнится функция RND, тем самым содержимое параметра #66 округлится до целого.
Последним выполнится второй оператор присвоения и результат округления поместится в параметр #66.
Таким образом, это выражение позволяет получить в параметре #66 округлённую величину произведения числа 3.3 на содержимое параметра #U.
Примеры выполнения условного выражения.
Пример:
#(10)_#(20)_#(30)
Выполнится последний безусловный оператор передачи управления.
Предыдущие игнорируются.
Пример:
#A==#B(10)_#(#A)
При выполнении равенства между содержимым #А и #В управление будет передано в соответствии с назначенным оператором передачи управления, запрограммированным последним. Условный оператор передачи управления, стоящий перед ним, игнорируется.
Пример:
#2>=5.73(100)+#3+1
Последовательность выполнения такова:
В начале проверится выполнение условия "больше или равно" и, независимо от результата проверки, к содержимому параметра #2 добавляется содержимое параметра #3, результат заносится в параметр #2. Затем к содержимому #2 добавляется 1, результат хранится в #2. Но передача управления произойдёт только при выполнении условия ">=".
Выражение эквивалентно двум выражениям:
1. #2+#3+1
2. #2>=5.73(100),
при условии, что первое всегда выполняется.