Tipp:
Damit einen der Kompiler bei solchen Fehlern anschreit, kann man die Argumente vertauschen.
if(enabled == false) // ist wohl so gemeint und damit richtig
if(!enabled) // macht das gleiche
if(false == enabled) // richtig, Parameterumkehr erlaubt
if(enabled = false) // kein Vergleich sondern Zuweisung (unbeabsichtigt)
if(false = enabled) // der Kompiler beschwert sich bitterlich
Also, Konstante nach links!
So kann man diesen = vs. == Tippfehler viel leichter identifizieren.
Das sind recht schwer zu findende Fehler, da das Auge den Code beim lesen repariert und das fehlende = gerne hinzu dichtet.
Es ist für manche im ersten Augenblick ungewohnt die Konstante links zu setzen, oder so vorzufinden, aber mit ein bisschen Übung geht das problemlos.
Warnungen aktivieren hilft auch solche Fehler zu finden. Der Compiler lässt das durchgehen weil Zuweisungen den zugewiesenen Wert zurückgeben. Dafür gibt es auch Anwendungen (eine while-Schleife ausführen solange eine Variable ungleich Null ist). Aber er merkt auch dass das meistens nicht ist was man möchte:
warning: suggest parentheses around assignment used as truth value [-Wparentheses]
Das mit den Klammern in diesem Fall keine Lösung, aber wenn man das liest weiß man was passiert ist
Und gerade weils da hakte wollt ich extra möglichst einfach/fehlersicher herangehen. Aber bei der Abfolge true/false ist dann auch klar, dass er beim printf von true ausgeht und trotzdem anschließend nicht reinspringt.
combie:
Tipp:
Damit einen der Kompiler bei solchen Fehlern anschreit, kann man die Argumente vertauschen.
if(enabled == false) // ist wohl so gemeint und damit richtig
if(!enabled) // macht das gleiche
if(false == enabled) // richtig, Parameterumkehr erlaubt
if(enabled = false) // kein Vergleich sondern Zuweisung (unbeabsichtigt)
if(false = enabled) // der Kompiler beschwert sich bitterlich
Also, Konstante nach links!
So kann man diesen = vs. == Tippfehler viel leichter identifizieren.
Das sind recht schwer zu findende Fehler, da das Auge den Code beim lesen repariert und das fehlende = gerne hinzu dichtet.
Es ist für manche im ersten Augenblick ungewohnt die Konstante links zu setzen, oder so vorzufinden, aber mit ein bisschen Übung geht das problemlos.
Danke, guter Tipp. Zwar nicht so intuitiv zu lesen, aber erscheint recht sinnig.