I probably overstated myself. Most C programmers are probably perfectly okay with it. But C programmers are crazy and enjoy hunting down memory leaks and memorizing which operator has a higher precedence.

IMHO, sane programmers try to avoid this.
In the example above, you are assuming that the compiler will automatically cast your pointer into a boolean value. Automatic casting doesn't always work the way you think it will.
This isn't an issue with most C compilers because it is a common practice to cast pointers to int, but it is still a cast.