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?发生了什么样的胁迫?
NULL通常定义为整数0.C++标准中的§4.7/ 4表示(积分转换):
如果源类型为bool,则将值
false转换为零,并将值true转换为1.
boolC++中隐含了和整数之间的转换.其余的很明显.典型的程序员会将其替换为简单:
if( __some_bool__ ) {
// do something
}
Run Code Online (Sandbox Code Playgroud)