Каким должен быть вывод echo ++ $ a + $ a ++ [duplicate]

На этот вопрос уже есть ответ здесь:

Почему $ a + ++ $ a == 2? 13 ответов

В руководстве по PHP,секция приоритета оператораВот этот пример:

// mixing ++ and + produces undefined behavior
$a = 1;
echo ++$a + $a++; // may print 4 or 5

Я понимаю, что поведение не определено по следующей причине:

посколькуx + y = y + x переводчик свободен в оценкеx а такжеy для добавления в любом порядке, чтобы оптимизировать скорость и / или память. Я пришел к выводу, посмотрев наПример кода C в этой статье.

Мой вопрос заключается в том, что вывод вышеупомянутого кода PHP должен быть4 независимо от того, каким образом вычисляются выражение и подвыражения:

op1 = ++ $ a => $ a = 2, op1 = 2; op2 = $ a ++ => op2 = 2, $ a = 3; 2 + 2 = 4op1 = $ a ++ => op1 = 1, $ a = 2; op2 = ++ $ a => op2 = 3, $ a = 3; 1 + 3 = 4

Откуда 5? Или я должен узнать больше о том, как работают операторы?

Редактировать:

Я смотрел наУвеличение / Уменьшение Операторов раздел, но до сих пор не мог понять, почему 5.

++ $ a: предварительное увеличение - увеличивает $ a на единицу,тогда возвращает $ a.
$ a ++: постинкремент - возвращает $ a,тогда увеличивает $ a на единицу.

Ответы на вопрос(3)

Ваш ответ на вопрос