The warning should be there whether there are parenthesis or not,
and it should state that you should have an explicit inequality
expression. So if you have
if (a = b) ...
and you really _mean_ that, then the way to write it sanely is to
just write it as
if ((a = b) != 0)
...
which makes it much clearer what you're actually doing.
Or actually change it to
a = b;
if (a)
That doesn't work with while().
But this works: while (a = b, a != 0).
(not that it is any better readable :-) ).