当我遇到一些看起来像这样的代码时,我正在重构一些代码:
if( __some_bool__ != NULL ) {
.....do something......
}
__some_bool__
是bool
的位置。我不是指Windows标头中的BOOL
typedef
。
这绝对是 NOT (编写本文的程序员)的意图。但是,在实际修复它之前,我想确保我没有破坏任何东西。
如何评估?是false
== NULL
?什么样的强制正在发生?
答案 0 :(得分:6)
NULL通常定义为整数0.而C ++标准中的§4.7/ 4表示(积分转换):
如果源类型为bool,则值
false
将转换为零 值true
将转换为一个。
bool
和整数之间的转换隐含在C ++中。其余的很明显。典型的程序员会将其替换为简单:
if( __some_bool__ ) {
// do something
}