Это потому, что начальная точка по умолчанию для enum
s в C
равна 0, что ложно, а не истина.
Вы должны использовать enum bool {false, true}
вместо. И, пожалуйста, не используйте мерзости как
if (x == true)
if (x == false)
вообще. Тебе было бы лучше с
if (x)
if (!x)
В любом случае, используйте true
и false
для установки логических значений, но вам никогда не придется проверять их таким образом. Тем более что определение ноль / не ноль, а не ноль / один.
Мне всегда нравилось (если вам действительно нужно):
#define false (1==0)
#define true (1==1)
Это как минимум гарантированно сработает.