最近在阅读别人的程序时遇到使用连续两个叹号(!!)的情况,经过查阅资料及测试后得到结论如下:
int v = !!statement;
如果statement是【整形数据0】则 v = 0,如果statement是【非0的整形数据】则 v = 1 。
测试代码如下:
#include <windows.h>
#include <iostream>
using namespace std;
static int func(int x);
int main(void)
{
int k = 12;
int m = 0;
int n = -19;
cout << "!!k = " << !!k << " !!m = " << !!m << " !!n = " << !!n << endl;
cout << "!!func(123) = " << !!func(123) << " !!func(0) = " << !!func(0) << endl;
system("pause");
return 0;
}
static int func(int x)
{
return x;
}
测试输出如下:
不建议对其他数据类型(如浮点型)进行这样的操作。