&&とANDの違いが分かりにくい根本的な理由は、true/falseが数字と一緒くたに扱われている(boolean型として独立していない)ためと思います。 もっとも、そこを逆用したテクニック、個人的には好きなんですけどね。