В чем неоднозначность ++$a + $a++ в PHP?

В руководстве по php утверждается, что:

$a = 1;
echo ++$a + $a++;

неоднозначен по своей грамматике, но мне это кажется предельно ясным . ++$a и $a++ оцениваются сначала слева направо, поэтому ++$a увеличивает число, а затем возвращает 2, а $a++ возвращает 2, а затем увеличивает значение. Сумма 2 + 2 равна 4, поэтому будет выведено 4. Однако В руководстве по PHPочень четко сказано, что он может печатать 4 или 5.

Спецификация php не указывает, что операции будут выполняется слева направо?

Даже если он не требует, чтобы операции выполнялись слева направо, в этом случае не будет ли он все равно возвращать 4?

Изменить: я перечитал страницу, и там указано, что это определяется каждым конкретным оператором. + имеет самый низкий приоритет и оценивается слева направо, так что мое предыдущее предположение кажется верным. Я все еще не понимаю.

8
задан nnythm 5 April 2012 в 01:35
поделиться