Возможно (хотя и маловероятно, по крайней мере, я надеюсь), что в коде C TRUE и FALSE # определены для вещей, отличных от 1 и 0. Например, программист, возможно, решил использовать 0 как «true» и -1 как «ложь» в конкретном API. То же самое относится и к унаследованному коду C ++, поскольку «true» и «false» не всегда были ключевыми словами C ++, особенно в тот день, когда существовал стандарт ANSI.
Стоит также отметить, что некоторые языки, особенно такие как script-y, как Perl, JavaScript и PHP, могут смешно интерпретировать, какие значения считаются истинными, а какие - ложными. Возможно (хотя, опять-таки, вряд ли на надежде), что «foo == false» означает что-то немного отличное от «! Foo». Этот вопрос помечен как «независимый от языка», и язык может определить оператор ==, чтобы он не работал способами, совместимыми с! оператор.