【发布时间】:2010-11-21 13:46:02
【问题描述】:
以这种方式将整数转换为布尔值的原因是什么?
bool booleanValue = !!integerValue;
而不仅仅是
bool booleanValue = integerValue;
我所知道的是,在 VC++7 中,后者会导致 C4800 warning 而前者不会。两者还有其他区别吗?
【问题讨论】:
-
双重否定后,保证值为0或1;原始值可能是任何 int 值。
-
但是为什么第二个语句不完全一样呢?
-
我想问题是为什么前者也不会导致 C4800,因为即使“将表达式转换为 bool 类型也不会禁用警告,这是设计使然。” (女士)
-
为什么没有更多的人知道 this 是正确的答案。双重否定在低级代码中很常见
-
嗯,这确实有它的位置......人们混淆了C++和C