我看到了一些这样的C++代码:
bool MyProject::boo(...)
{
bool fBar = FALSE;
....
return !!fBar;
}
我想不出在这种情况下直接返回
fBar
和返回!!fBar
之间的任何区别。两个负面因素有何不同?谢谢
最佳答案
在您的示例中,返回fBar
和返回!!fBar
没有什么区别。
在其他情况下,例如当使用用户定义的类型(例如BOOL
(typedef
-ed为int
))时,!!
构造具有将任何非零值强制为true
的作用;即!!fBar
与fBar ? true : false
等效。如果fBar
可以为5,并且您想将其与TRUE
(定义为(BOOL)1
)进行比较,则可能会有所不同。