https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104948
--- Comment #14 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to dagelf from comment #13) > Although I would love to find counter examples, I would be willing to wager > that && mixed with non bools, will almost always be done in error. No, this is valid and not done in error: void f(const char* str, size_t len) { if (str && len) { /* ... */ } } The condition is equivalent to (str != 0 && len != 0) but more succinct. If you prefer the more verbose form, that's fine, but it doesn't mean everyone else's code is erroneous.