我有一些广泛使用 !!
的 C++ 代码。我有点困惑,因为据我所知 !!
不是一个独立的运算符,而是两个 !
一个接一个。所以这意味着 !!foo
与 foo
相同。
!!
真的有意义吗?我在想它是否可能有一点明智的意义?所以你首先对 foo
执行一些位操作,然后对结果执行 !
?但我似乎不记得 !
被用作有点明智的运算符,并且似乎也没有找到任何引用告诉我它是。据我所知, !
仅用作逻辑运算符,在这种情况下
!!foo == foo
最佳答案
这不是双重否定那么简单。例如,如果你有 x == 5
,然后应用两个 !运算符(!!x
),它将变为 1 - 因此,它用于规范化 {0, 1}
范围内的 bool 值。
请注意,您可以将零用作 bool 值 false,将非零值用作 bool 值 true,但您可能需要将结果标准化为 0 或 1,此时 !!
很有用.
和 x != 0 一样吗? 1 : 0
.
另外,请注意,如果 foo
不在 {0, 1}
集合中,则这不是真的:
!!foo == foo
#include <iostream>
using namespace std;
int main()
{
int foo = 5;
if(foo == !!foo)
{
cout << "foo == !!foo" << endl;
}
else
{
cout << "foo != !!foo" << endl;
}
return 0;
}
打印 foo != !!foo
。
关于c++ - 因使用双重逻辑非 (!!) 运算符而感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16191446/