Perl-Konfussion
Wo wir gerade beim Erklären sind: Kann mir jemand die Ausgaben von diesem konfusen Perl-Beispiel erläutern. Meine Teilnehmer der Informatik-AG wollten die Ergebnisse wissen, aber ich habe bislang noch keine Erklärung gefunden, die alle Ausgaben einheitlich erklären würde.
Geschrieben von Jan Theofel am 19.04.2005 um 0:10 Uhr (Permalink)
Abgelegt unter Perl
Die Erklärung ist eigentlich einfach und sie gilt nicht nur für Perl sondern für viele andere Programmiersprachen (bspw. C) auch:
Die Zeile "a[++i] = b[i];" enthält mehrere Anweisungen: zum einen das Inkrementieren von i, zum anderen die Zuweisung des Wertes auf der rechten Seite an die Referenz der linken Seite. Obiges enthält die einzelnen Schritte
und es ist nur festgelegt, dass a) vor c) und b) vor c) ausgeführt wird. In welcher Reihenfolge nun a) und b) ausgeführt werden, d.h. wann nun i inkrementiert wird, ist abhängig von der Implementierung des Interpreters/Compilers. Meist bestimmen nämlich in diesen Fällen die vorhandenen Prozessor-Befehle (hier: gibt es indizierten Zugriff mit Pre-Inkrement des Index?) die Reihenfolge.
1 | Bernd Raichle | 3.11.2005 um 15:53