PHP Post / Pre Inkrement / Dekrement, Vorrang - PHP, Operator-Vorrang

Wie ich weiß, wird Vorinkrement vor allen anderen Vorgängen berechnet, nach allen Vorgängen wird Vorinkrement berechnet.

In php docs wird gesagt, dass Schritt (wie ich genau Prä-Inkrement verstehen) sehr hohe Priorität hat. Post-Inkrement sollte eine sehr niedrige Priorität haben, in der Tat die niedrigste.

+ Betreiber Vorrang ist viel niedriger als dann ++ einer (laut Dokumentation).

So, jetzt die Frage: In PHP-Dokumenten gibt es ein Beispiel, das zeigt, dass Vorinkrement und Postinkrement in einem Ausdruck variieren können:

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

Warum? WTF? Ich sehe folgendes Szenario und es ist sehr klar:

  1. Vorinkrement $ a
  2. Berechnen Sie die Summe für $ a und $ a
  3. Post erhöhen $ a

Ich kann nicht verstehen, warum es unberechenbar ist. PHP-Dokumentation zu diesem Thema (und auch dieses Beispiel) kann dort gefunden werden: http://www.php.net/manual/en/language.operators.precedence.php

Antworten:

0 für die Antwort № 1

Es würde immer produzieren 4 weil das letzte $a benutzt Post-increment damit es produziert 5 dann benutze Pre-increment wie der erste $a

$a = 1;
echo ++ $a +  $a++; // 4

Und

$a = 1;
echo ++ $a + ++ $a; //  5

Inkrementieren / Dekrementieren von Operatoren