#include <stdio.h>
volatile int i;
int main()
{
int c;
for (i = 0; i < 3; i++)
{
c = i &&& i;
printf("%d\n", c);
}
return 0;
}
上面使用gcc
编译的程序的输出是
0
1
1
使用 -Wall
或 -Waddress
选项,gcc
会发出警告:
warning: the address of ‘i’ will always evaluate as ‘true’ [-Waddress]
c
在上述程序中是如何被评估的?
最佳答案
它是 c = i && (&i);
,第二部分是多余的,因为 &i
永远不会评估为 false
。
对于用户定义的类型,您实际上可以重载一元 operator &
,它可能会有所不同,但这仍然是一个非常糟糕的主意。
如果您打开警告,您会得到如下信息:
warning: the address of ‘i’ will always evaluate as ‘true’
关于c++ - C中的&&运算符是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13946938/