Каково различие между приоритетом, ассоциативностью и порядком?

Стандартная библиотека Python предоставляет sched и threading для этой задачи. Но это означает, что ваш скрипт планировщика будет работать все время, а не оставлять его выполнение в ОС, что может быть или не быть тем, что вы хотите.

5
задан J0e3gan 7 June 2014 в 04:35
поделиться

3 ответа

Правила приоритета указывают приоритет операторов (какие операторы будут оценены сначала, например, умножение имеет более высокий приоритет, чем дополнение, PEMDAS).

Правила ассоциативности говорят, как операторы того же приоритета сгруппированы. Арифметические операторы левоассоциативны, но присвоение является правоассоциативным (например, = b = c будет оценен как b = c, = b).

Порядок является результатом применения приоритета, и ассоциативность управляет и говорит, как выражение будет оценено - какие операторы будут оцененными елями, который позже, который в конце. Фактический порядок может быть изменен при помощи фигурных скобок (фигурные скобки являются также оператором с наивысшим приоритетом).

Приоритет и ассоциативность операторов на языке программирования могут быть найдены в его руководстве языка или спецификации.

9
ответ дан 18 December 2019 в 14:54
поделиться

Я не уверен там, действительно различие. Традиционные BODMAS (скобки, заказы, разделение, умножение, дополнение, вычитание) или PEDMAS (круглые скобки, экспоненты, разделение, умножение, дополнение, вычитание) являются просто подмножествами всех возможных операций и обозначают порядок, в котором должны быть применены такие операции. Я не знаю ни о каком языке, на котором нарушены правила BODMAS/PEDMAS, но каждый язык обычно добавляет различные другие операторы - такой как ++, - = и т.д.

Я всегда сохраняю список приоритета оператора близко к руке в случае беспорядка. Однако, когда в сомнении обычно стоит использовать некоторые круглые скобки, чтобы ясно дать понять значение. Просто знайте, что круглые скобки не имеют наивысшего приоритета - см. http://msdn.microsoft.com/en-us/library/126fe14k.aspx для примера в C++.

2
ответ дан 18 December 2019 в 14:54
поделиться

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

Если у Вас есть термин без скобок, Вы запускаете с операторов с самым низким приоритетом и включаете его в скобках.

Например:

Precendences:

  1. .
  2. !
  3. *,/
  4. +,-
  5. ==
  6. &&

Термин:

!person.isMarried && person.age == 25 + 2 * 5

был бы сгруппирован как этот:

  1. ! (person.isMarried) && (person.age) == 25 + 2 * 5
  2. (! (person.isMarried)) && (person.age) == 25 + 2 * 5
  3. (! (person.isMarried)) && (person.age) == 25 + (2 * 5)
  4. (! (person.isMarried)) && (person.age) == (25 + (2 * 5))
  5. (! (person.isMarried)) && ((person.age) == (25 + (2 * 5)))
  6. ((! (person.isMarried)) && ((person.age) == (25 + (2 * 5))))

Одно очень общее правило является приоритетом * и / прежде + и-.

Ассоциативность указывает, в котором сгруппированы операторы направления того же приоритета. Большинство операторов слева направо. Унарные префиксные операторы справа налево.

Пример:

1 + 2 + 3 + 4

сгруппирован как этот:

  1. (1 + 2) + 3 + 4
  2. ((1 + 2) + 3) + 4
  3. (((1 + 2) + 3) + 4)

в то время как

!! +1

сгруппирован как

  1. !! (+1)
  2. ! (! (+1))
  3. (! (! (+1)))

До сих пор все соответствует правилам BODMAS/PEDMAS, какие различия Вы испытали?

2
ответ дан 18 December 2019 в 14:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: