Hallo,
ich weiß nicht, ob dir die Syntax und Semantik einer Zuweisung vollständig klar ist...
Du hast da eine Zuweisung, wenn mich meine Kenntnisse nicht täuschen dürfte die eigentlich immer true ergeben außer die Zuweisung schlägt aus irgend einem Grund fehl
Nein, das ist falsch.
Die Zuweisung ergibt, wenn man sie als Ausdruck irgendwo einsetzt, immer den Wert, der auch zugewiesen wird. Ist außerdem ein Klassiker unter den Fehlern in C-Code:
if (a=4)
{ ...
}
Wahrscheinlich hat der Programmierer hier einen Vergleich gemeint, tatsächlich aber eine Zuweisung formuliert. Der Wert der Zuweisungsoperation ist immer 4, ergo nicht Null, also trifft die Bedingung zu.
Ähnlich, nur komplizierter, ist das im Beispiel von Tobias. Der Wert des Ausdrucks ist hier der Wert des eval()-Terms. Und der kann - je nach sonstigen Umgebungsbedingungen - durchaus auch mal Null sein.
So long,
Martin