Об ассоциативности в 'C' - PullRequest
0 голосов
/ 24 июня 2010

Как я могу решить или понять, имеет ли ассоциативность какое-либо утверждение или выражение слева направо или справа налево?

Ответы [ 3 ]

3 голосов
/ 24 июня 2010

=, + = и т. Д., Операторы, в которых есть '=', ассоциированы справа.

Все остальные связаны слева.

2 голосов
/ 24 июня 2010

Вот таблица приоритета оператора C ++ .

Приоритет и ассоциативность операторов одинаковы в C и C ++ (операторы по модулю, которых нет в первом).

0 голосов
/ 24 июня 2010

Читайте стандарты

РЕДАКТИРОВАНИЕ: У меня самих стандартов нет, но я нашел эту ссылку , предположительно основанную на стандарте.

Также, цитируя Кернигана и Ричи:

Арифметические операторы связывают слева с правый.

Выражения, связанные с && или || являются оценивается слева направо и оценка останавливается, как только истина или ложь результата известна. Большинство программ на С полагаются на эти свойства.

Операторы Ассоциативность

() [] ->. слева направо

! ~ ++ - + - * (тип) размер справа налево

* /% слева направо

+ - слева направо

<< >> слева направо

<<=>> = слева направо

==! = Слева направо

и слева направо

^ слева направо

| слева направо

&& слева направо

|| слева направо

?: справа налево

= + = - = * = / =% = & = ^ = | = << = >> = справа налево

слева направо

Унарные & +, - и * имеют более высокий приоритет, чем двоичные формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...