> hat das irgendwelche gründe im compilerbau?
nein. ursprünglich waren Zuweisung und Prüfung schon durch den Kontext eindeutig definiert.
in den ersten Basic-Varianten musste ein "Set" vor jeglicher zuweisung stehen.
auch heute ist es in Basic noch so, dass eigentlich eine Zuweisung
nicht im Kontext einer Prüfung stehen kann und umgekehrt.
aber in C geht das, und deshalb wurde es nötig, zwei unterschiedliche Zeichen zubenutzen.
mal etwas herausgerissen aus dem zusammenhang:
nur wenn die erste bedingung TRUE ist, wird die Zweite bearbeitet.
bei nem OR nur dann, wenn die erste False ist, der Ausdruck wird solange ausgewertet,
bis ein eindeutiges ergebnis vorliegt, dann bleibt der Rest unbearbeitet.
die Zweite ist aber eine Zuweisung, und ist damit immer True,
verändert also den Boolwert nicht, wird aber nur dann ausgeführt,
wenn die erste bedingung zutrifft.
klar, das hier ist unnütz, aber man kann damit wirklich abenteuerliche konstrukte bauen,
dass eine routine unter verschiedensten bedingungen ausgeführt wird,
aber ettliche Flags komplett andere werte haben, je nachdem, welche der verschachtelten Bedingungen zur ausführung führte.
PS:
und DAS ist eines der dinge, die C ausmachen.
wer das nicht kann, kann auch BASIC nehmen.