`if(__some_bool__!= NULL)`的表现如何?

时间:2014-10-23 04:05:24

标签: c++ visual-c++ conditional-statements comparison-operators

当我遇到一些看起来像这样的代码时,我正在重构一些代码:

if( __some_bool__ != NULL ) {
    .....do something......
    }

__some_bool__bool的位置。我不是指Windows标头中的BOOL typedef

这绝对是 NOT (编写本文的程序员)的意图。但是,在实际修复它之前,我想确保我没有破坏任何东西。

如何评估?是false == NULL?什么样的强制正在发生?

1 个答案:

答案 0 :(得分:6)

NULL通常定义为整数0.而C ++标准中的§4.7/ 4表示(积分转换):

  

如果源类型为bool,则值false将转换为零   值true将转换为一个。

bool和整数之间的转换隐含在C ++中。其余的很明显。典型的程序员会将其替换为简单:

if( __some_bool__ ) {
    // do something
}