Как я могу решить или понять, имеет ли ассоциативность какое-либо утверждение или выражение слева направо или справа налево?
=, + = и т. Д., Операторы, в которых есть '=', ассоциированы справа.
Все остальные связаны слева.
Вот таблица приоритета оператора C ++ .
Приоритет и ассоциативность операторов одинаковы в C и C ++ (операторы по модулю, которых нет в первом).
Читайте стандарты
РЕДАКТИРОВАНИЕ: У меня самих стандартов нет, но я нашел эту ссылку , предположительно основанную на стандарте.
Также, цитируя Кернигана и Ричи:
Арифметические операторы связывают слева с правый. Выражения, связанные с && или || являются оценивается слева направо и оценка останавливается, как только истина или ложь результата известна. Большинство программ на С полагаются на эти свойства. Операторы Ассоциативность () [] ->. слева направо ! ~ ++ - + - * (тип) размер справа налево * /% слева направо + - слева направо << >> слева направо <<=>> = слева направо ==! = Слева направо и слева направо ^ слева направо | слева направо && слева направо || слева направо ?: справа налево = + = - = * = / =% = & = ^ = | = << = >> = справа налево слева направо Унарные & +, - и * имеют более высокий приоритет, чем двоичные формы.
Арифметические операторы связывают слева с правый.
Выражения, связанные с && или || являются оценивается слева направо и оценка останавливается, как только истина или ложь результата известна. Большинство программ на С полагаются на эти свойства.
Операторы Ассоциативность
() [] ->. слева направо
! ~ ++ - + - * (тип) размер справа налево
* /% слева направо
+ - слева направо
<< >> слева направо
<<=>> = слева направо
==! = Слева направо
и слева направо
^ слева направо
| слева направо
&& слева направо
|| слева направо
?: справа налево
= + = - = * = / =% = & = ^ = | = << = >> = справа налево
слева направо
Унарные & +, - и * имеют более высокий приоритет, чем двоичные формы.