據我所知,preincrement是在所有其他操作之前計算的,postincrement是在所有操作之後計算的。Php post/pre increment/decrement,precedence
在php文檔中,據說增量(正如我理解的那樣)具有很高的優先級。後增量應該具有非常低的優先級,實際上是最低的。
+
運算符優先級低於++
(根據文檔)。
所以,現在的問題是:在PHP文檔有一個例子,表明增量和後增量在一個表達式可以改變:
// mixing ++ and + produces undefined behavior
$a = 1;
echo ++$a + $a++; // may print 4 or 5
爲什麼? WTF?我看到下面的情形的這是很清楚的:
- 預遞增美元
- 計算總和$和$一個
- 後增量美元
我不明白爲什麼它是不可預知的。關於這方面的 PHP文件(也本示例)可以在那裏找到: http://www.php.net/manual/en/language.operators.precedence.php
[它總是會產生'4'](http://3v4l.org/iQdFp) – Baba
是相同的代碼,給出不同的輸出隨機?您列出的代碼將始終打印4,據我所知。不應該有任何不一致 – Stephan
投票重新打開。手冊談到了一個具體的現象(未定義的行爲),並且OP在問爲什麼這是即使所有的優先級都應該很清楚。不知道這個問題有什麼問題。 – deceze