Каким должен быть вывод 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
независимо от того, каким образом вычисляются выражение и подвыражения:
Откуда 5? Или я должен узнать больше о том, как работают операторы?
Редактировать:
Я смотрел наУвеличение / Уменьшение Операторов раздел, но до сих пор не мог понять, почему 5.
++ $ a: предварительное увеличение - увеличивает $ a на единицу,тогда возвращает $ a.
$ a ++: постинкремент - возвращает $ a,тогда увеличивает $ a на единицу.