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