看一些代码,我注意到另一个开发者已将每个true的实例更改为!false。 为什么要这么做? THX
答案 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所以他将在安全的地方