Подтвердить что ты не робот

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

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

Обновлено: ассоциация операторов

4b9b3361

Ответ 1

Для операторов ассоциативность означает, что, когда один и тот же оператор появляется в строке, то какое действие мы применяем первым. В дальнейшем пусть 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

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

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

Ответ 2

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

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

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

Ассоциативность в кэшах процессора.

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

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

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

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

Ответ 3

это порядок оценки для операторов с одинаковым приоритетом. ЛЕВАЯ ВРАЩАЮЩАЯСЯ ПРАВО или ПРАВО НА ЛЕВЫЙ порядок. Для

3 - 2 - 1

если LEFT RIGHT, а затем

(3 - 2) - 1

и равно 0. Если оно ПРАВИЛЬНО к ЛЕВЫМ, то оно

3 - (2 - 1)

и оно равно 2. В большинстве языков мы говорим, что оператор минус имеет ЛЕВУЮ ПРАВУЮ ассоциативность.

Ответ 4

Если вы имеете в виду "ассоциативность операторов" - это то, как язык определяет, как операторы с одинаковым приоритетом группируются при отсутствии скобок.

Например, операторы + и - в языках на основе C имеют одинаковый приоритет. Когда вы пишете выражение, которое использует оба из них (без скобок), компилятор должен определить, в каком порядке их оценивать.

Если вы напишите 12 - 5 + 3, возможные оценки включают в себя:

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

В зависимости от порядка, в котором вы оцениваете выражение, вы можете получить разные результаты. В языках на основе C + и - оставили ассоциативность, что означает, что приведенное выше выражение будет оцениваться как первый случай.

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

Ответ 5

Просто!!

Левый Ассоциативный означает, что мы оцениваем наше выражение слева направо

Право Ассоциация означает, что мы оцениваем наше выражение справа налево

Мы знаем *,/, и% имеют одинаковый приоритет, но в соответствии с ассоциативностью, ответ может измениться:

Например: у нас есть выражение: 4 * 8/2% 5

Левый ассоциативный: (4 * 8)/2% 5 ==> (32/2)% 5 ==> 16% 5 ==> 1

Правая ассоциация: 4 * 8/(2% 5) ==> 4 * (8/0) ==> Неопределенное поведение

Я надеюсь, что это поможет.

Ответ 6

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

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

a - b + c

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

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

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

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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