Da hast Du recht, vermutlich liegt da mein Problem:Ein if in C funktioniert etwas anders, als in manchen anderen Sprachen.
Eine Abfrage wie if (a) würde in anderen Sprachen angemeckert werden, weil ein Operator fehlt.
Bei if (a=3) handelt es sich quasi um ein Doppelschritt, wenn ich das so nennen darf.
Erst wird a der Wert 3 zugewiesen und dann wird verglichen ob das Ergebnis ungleich 0 ist.
Vermutlich wird das sogar wegoptimiert, weil 3 immer TRUE ist.
Jezt wird mir auch langsam klar warum es == gibt. Das bedeutet nicht etwa "besonders gleich"![]()
sondern lediglich ein Vergleich ohne jegliche Zuweisung.
Mit dem Vertauschen sieht zwar erstmal etwas "ungewohnt" aus, hat aber durchaus seinen Sinn.
Einer Konstanten kann ich ja nichts zuweisen. Leuchtet ein.
Lesezeichen