The genie is out of the bottle already, gcc quite sensibly will warn you if it sees an assignment operator in an if statement. I'm sure it's saved countless man hours and pretty awful bugs since it was introduced :-)
if(0 != (i = getValue()))
> if (i = 0)
instead of
> if (i == 0)
if ((i = getValue())) if (0 != (0 != (i = getValue())))