If-Verzweigung scheitert?!

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