Was soll die Ausgabe von echo sein? ++ $ a + $ a ++ [duplicate]
Diese Frage hat hier bereits eine Antwort:
Warum ist $ a + ++ $ a == 2? 13 AntwortenIm PHP-HandbuchOperator-Vorrang-Abschnittgibt es dieses Beispiel:
// mixing ++ and + produces undefined behavior
$a = 1;
echo ++$a + $a++; // may print 4 or 5
Ich verstehe, dass das Verhalten aus folgendem Grund undefiniert ist:
Schon seitx + y = y + x
Der Dolmetscher kann frei bewertenx
undy
Zum Hinzufügen in beliebiger Reihenfolge, um die Geschwindigkeit und / oder den Speicher zu optimieren. Ich schloss dies nach dem Blick auf dieC-Codebeispiel in diesem Artikel.
Meine Frage ist, dass die Ausgabe des oben genannten PHP-Codes sein soll4
egal wie der Ausdruck und die Unterausdrücke ausgewertet werden:
Woher kommen die 5? Oder sollte ich mehr darüber erfahren, wie die Bediener arbeiten?
Bearbeiten:
Ich habe angestarrtInkrementieren / Dekrementieren von Operatoren Abschnitt, konnte aber immer noch nicht herausfinden, warum 5.
++ $ a: Pre-Increment - Inkrementiert $ a um eins,dann gibt $ a zurück.
$ a ++: Post-Inkrement - Gibt $ a zurück,dann erhöht $ a um eins.