Что такое ассоциативность операторов и почему это важно?

size() говорит вам, сколько элементов у вас в данный момент. capacity() говорит вам, насколько большим может быть размер, прежде чем вектор должен перераспределить память для себя.

Емкость всегда больше или равна размеру. Вы не можете индексировать дальше элемента # size()-1.

80
задан John Saunders 30 May 2009 в 22:15
поделиться

8 ответов

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

a Q b Q c

Если Q является левоассоциативным, то он оценивается как

(a Q b) Q c

А если он правоассоциативен, то он оценивается как

a Q (b Q c)

Это важно, так как меняет значение выражения. Рассмотрим оператор деления с целочисленной арифметикой, который является левоассоциативным

4 / 2 / 3    <=>    (4 / 2) / 3    <=> 2 / 3     = 0

. Если бы он был правоассоциативным, он оценил бы неопределенное выражение, так как вы бы делили на ноль

4 / 2 / 3    <=>    4 / (2 / 3)    <=> 4 / 0     = undefined
92
ответ дан 24 November 2019 в 09:59
поделиться

, это порядок оценки для операторов с одинаковым приоритетом. Порядок «ВЛЕВО НАПРАВО» или «ВПРАВО НАЛЕВО» имеет значение. Для

3 - 2 - 1

, если он СЛЕВА НАПРАВО, то он равен

(3 - 2) - 1

и равен 0. Если СЛЕВА НАПРАВО,

6
ответ дан 24 November 2019 в 09:59
поделиться

Существует три вида ассоциативности:

Ассоциативное свойство в математике

Порядок операций в языках программирования

Ассоциативность в кэше ЦП.

Ассоциативное свойство в математике является свойством таких операторов, как сложение (+). Это свойство позволяет вам переставлять круглые скобки без изменения значения оператора, например:

(a + b) + c = a + (b + c)

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

В кэшах ЦП ассоциативность - это метод оптимизации производительности.

12
ответ дан 24 November 2019 в 09:59
поделиться

If you are referring to "operator associativity" - it is how a language determines how operators of the same precedence are grouped in the absence of parentheses.

For example, the + and - operators in C-based languages have the same precedence. When you write an expression that uses both of them (without parentheses) the compiler must determine what order to evaluate them in.

If you write 12 - 5 + 3, the possible evaluations include:

  1. (12 - 5) + 3 = 10
  2. 12 - (5 + 3) = 4

Depending on the order you evaluate the expression in, you can get different results. In C-based languages, + and - have left associativity, which means that the expression above would evaluate as the first case.

All language have strongly-defined rules for both precedence and associativity. You can learn more about the rules for C# here. The general concepts of operator associativity and precedence are well covered on wikipedia.

5
ответ дан 24 November 2019 в 09:59
поделиться

Я полагаю, вы имеете в виду ассоциативность операторов ...

Это порядок привязки операндов к оператору. В основном:

a - b + c

может быть оценено как (при условии, что - и + имеют одинаковый приоритет):

((a - b) + c) или,
(a - (b + c))

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

2
ответ дан 24 November 2019 в 09:59
поделиться

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

0
ответ дан 24 November 2019 в 09:59
поделиться

Если вы имеете в виду ассоциативность операторов:

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

Это наиболее важно для операций с одинаковым прецедентом, когда могут быть побочные эффекты.

1
ответ дан 24 November 2019 в 09:59
поделиться

Мы все знаем, что приоритет важен, но такова ассоциативность в интерпретации значения выражения. Для действительно простого введения попробуйте Power of Operators .

0
ответ дан 24 November 2019 в 09:59
поделиться