2013-06-21 3 views
2

Который должен быть оценен сначала, x = 1 или x = 2?Оценка кронштейна

В этом случае: Y = (х * (х = 1))/(х + (х = 2))

И в этом случае: Y = (6+ (х (х = 1))/(4+ (9- (х * (х = 2))))

... например.

Я сколотили очень грубое предположение на выражения оценщиком некоторое время назад. Я перешел на простой приоритет слева направо в оценке скобок (очевидно, все еще глубина сначала для каждого набора скобок), но вопрос о том, какой набор кронштейнов должен быть оценен, сначала озадачивает меня. Самый глубокий набор сначала или придерживайтесь l-r приоритетом?

ответ

0

Это ваш выбор. Из этой статьи Википедии «Order of Operations»:

Many programming languages use precedence levels that conform to the order 
commonly used in mathematics, though some, such as APL and Smalltalk, have 
no operator precedence rules (in APL evaluation is strictly right to left, 
in Smalltalk it's strictly left to right). 
+0

Спасибо ... Я полагаю, что в основном искал математический ответ, хотя фраза «обычно используется» все еще оставляет эту дверь открытой, я думаю. – Beeblbrox

0

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

if (obj != null && obj.propertyA == "a") 

в случае справа налево вы имели бы исключение