Что такое precidency и associtivity для оператора инкремента и оператора присваивания для блока кодаЧто такое precidency и associtivity для оператора инкремента и оператора присваивания для блока кода
$a=array(1,2,3);
$b=array(4,5,6);
$c=1;
$a[$c++]=$b[$c++];
print_r($a);
В соответствии с исполнением его выдает
Array
(
[0] => 1
[1] => 6
[2] => 3
)
Но я не могу понять, как массив $a
индекс 1 содержит значение массива $b
индекса 2 значения. Может ли кто-нибудь объяснить сценарий, как происходит выполнение?
Не является ли это случай * непредсказуемое поведение *? См. Http://stackoverflow.com/questions/949433/why-are-these-constructs-undefined-behavior?lq=1. – SukkoPera
Можете ли вы объяснить, что именно вас озадачивает в этом поведении? Это поведение «++» или порядок выполнения? Какой результат вы ожидали бы? – deceze
Привет, Deceze наиболее озадачивающим является то, какой шаг стороне стороны должны быть рассчитаны в первую очередь? Но в соответствии с таблицей приоритета оператор приращения имеет правую ассоциативность. Поэтому в вопросе в четвертой строке $ C++ в правой части оператора присваивания должен выполняться сначала i.e. Сначала нужно выполнить $ b [$ C++]. – bikashphp