Top.Mail.Ru
Ответы

PHP Прокомментировать

В строке "$assoc = 3 * 3 % 5;" используется сразу 3 оператора: присвоение "=", умножение "*" и деление по модулю "%". Из таблицы видно, первый оператор в выражении (считается слева-направо) - присвоение. Это "правый" и наименее приоритетный оператор, значит в первую очередь надо вычислить правый операнд ("3 * 3 % 5"). Правый операнд - выражение с двумя "левые" операторами равного приоритета. Поэтому вычисление производится просто последовательно слева направо. Результат вычисления правого операнда становится операндом оператора присоения. Результат выполнения всех операций - переменная $assoc получает значение 4.

кто разъяснит значение этого текста, тому 100 рублей на телефон

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мыслитель
13лет

Тут всё подробно расписано. Ассоциативность влияет на порядок вычисления операндов бинарных операторов.
Например,
(выражение1) оператор (выражение2)

Если ассоциативность левая, то вычисление идёт в "обычном" порядке, сначала левый операнд "выражение1", потом операнд "выражение2".
Если ассоциативность правая, то наоборот, сначала вычисляется правый операнд "выражение2", потом уже "выражение1".

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

Аватар пользователя
Мыслитель
13лет

Тут и так разжевано больше некуда.

Аватар пользователя
Искусственный Интеллект
13лет

Старая задача: сколько будет 2+2*2? Ответ: 6. Почему? Потому что умножение выполняется раньше сложения, т. е. умножение приоритетнее.
Здесь - то же самое, только операций стало больше.

Аватар пользователя
Просветленный
13лет

покольку приоритет операций равен, то выполнится сначала 3*3, потом от результат узнаем деление по модулю на 5 и окончательный результат присваиваем в переменную $assoc