Третий от второго не отличается. Логическое "И" само даёт
булево значение. Двойная инверсия пригодилась бы в случае битового
"И". Но это не ваш случай. Товарищ розовый прав, и да, вариант с двумя инверсиями - подходит. По-моему, современный GCC любой из вариантов оптимизирует в один и тот же код. Я, поэтому, не парюсь.