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

Ale*_*cio 0 c++ visual-c++ comparison-operators conditional-statements

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

if( __some_bool__ != NULL ) {
    .....do something......
    }
Run Code Online (Sandbox Code Playgroud)

哪里__some_bool__bool.我不是说了BOOL那是typedef在Windows头文件"d.

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

这将如何评估?不false== NULL?发生了什么样的胁迫?

Pet*_*lin 6

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

如果源类型为bool,则将值false转换为零,并将值true转换为1.

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

if( __some_bool__ ) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)