MS VC ++ 6:为什么要返回!假而不是真?

时间:2009-07-30 09:34:06

标签: c++ vc6 boolean

看一些代码,我注意到另一个开发者已将每个true的实例更改为!false。 为什么要这么做? THX

6 个答案:

答案 0 :(得分:9)

没有充分的理由来写!假而不是真 不好的理由可能包括混淆(使代码更难阅读),个人偏好,严重的全局搜索和替换,以及将布尔值转换为整数的恶作剧。

可能有些混淆是由Win32中的TRUE和FALSE定义引起的,这些定义不是bool类型而是int,并且在布尔语句中使用时可能会触发警告。主要是,任何非零都是“真实的”,但如果你想确保使用整数而不是布尔值时“真”总是一个,你有时会看到像这样的恶作剧。这仍然不是一个好理由; - )

答案 1 :(得分:4)

我不知道,我一直在写C ++。我怀疑他的理由是他们不是好人。

答案 2 :(得分:3)

我认为这是历史性的事情。 IIRC在某些C / C ++编译器上存在问题,知道编译器将用什么来表示为真。你可以知道false是零因此!false将是当前ABI将具有的真实值。

一般来说,这是多余的,但有一些特殊情况,它有用,但我想不出一个。

答案 3 :(得分:3)

如果线

可能是必要的

#define true false

只是发生在标题中的某个地方:)

答案 4 :(得分:1)

也许他的代码中有这么多真假,他想轻易扭转它,他可以使用他的编辑搜索并替换,

答案 5 :(得分:0)

我实际上不知道但是可能是TRUE不是1(任何> 0)和FALSE是零所以“不假”= 1所以他将在安全的地方