MS VC ++ 6: зачем возвращать! False, а не true? - PullRequest
1 голос
/ 30 июля 2009

Глядя на некоторый код, я заметил, что другой разработчик изменял каждый экземпляр true на! False. Почему ты бы так поступил? ТНХ

Ответы [ 6 ]

9 голосов
/ 30 июля 2009

Нет веских причин писать! Ложь вместо истины.
Плохие причины могут включать в себя запутывание (затрудняющее чтение кода), личные предпочтения, плохо продуманный глобальный поиск и замена и махинации, преобразовывающие логические значения в целые числа.

Возможно, что некоторая путаница была вызвана определениями ИСТИНА и ЛОЖЬ в Win32, которые не относятся к типу bool, а являются целочисленными и могут вызывать предупреждения при использовании в логических выражениях. В основном, все, что не равно нулю, является «истиной», но если вы хотите убедиться, что «истина» всегда равна единице при использовании целых чисел вместо логических значений, вы иногда видите подобные махинации. Это все еще не веская причина; -)

4 голосов
/ 30 июля 2009

Понятия не имею, и некоторое время я писал на C ++. Я подозреваю, что по каким бы то ни было причинам, они не были хорошими.

3 голосов
/ 30 июля 2009

Это может быть необходимо, если строка

#define true false

просто случилось чтобы быть где-то в заголовках:)

3 голосов
/ 30 июля 2009

Я думаю, это историческая вещь. В IIRC возникла проблема с некоторыми компиляторами C / C ++, которые знали, что компилятор будет использовать для представления как true. Вы можете знать, что false равно нулю, следовательно! False будет тем, что текущий ABI будет иметь как true.

Обычно это избыточно, но есть несколько особых случаев, когда это полезно, но я не могу придумать ни одного.

1 голос
/ 30 июля 2009

возможно, он получил так много правды и лжи в своем коде, и он хотел легко изменить его, он может просто использовать поиск и замену своего редактора,

0 голосов
/ 30 июля 2009

На самом деле я не знаю, но может быть ИСТИНА - это не 1 (любая вещь> 0), а ЛОЖЬ - ноль, поэтому "не ложь" = 1, поэтому он будет в безопасном месте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...