返回布尔值时,为什么要使用"!!"

All*_*ang 3 c++ boolean visual-c++

我看到了一些像这样的C++代码:

bool MyProject::boo(...)
{
  bool fBar = FALSE;
  ....
  return !!fBar;
}
Run Code Online (Sandbox Code Playgroud)

我想不出fBar在这种情况下直接返回和返回之间的任何区别!!fBar.两个否定因素如何产生影响?

谢谢

mus*_*hil 7

在您的示例中,返回fBar和返回之间没有区别!!fBar.

在其他情况下,例如,当使用诸如BOOL(typedef-ed to be int)的用户定义类型时,该!!构造具有强制任何非零值的效果true; 即!!fBar相当于fBar ? true : false.如果fBar可以是5并且您想要将其与之进行比较TRUE(这被定义为),则可以产生差异(BOOL)1.