如果 -8 & 7 不为 0,为什么输出为 False? 我知道它应该是 && 但问题是“代码中有问题吗?它是什么?为什么输出为 False?”有人可以帮忙吗?
#include <stdio.h>
int main ()
{
if (-8 & 7)
{
printf("Always\n");
}
else
{
printf("False\n");
}
return 0;
}
最佳答案
Why is the output False if -8 & 7 is not 0?
答:实际上是 0。
详细来说,&
是按位 AND 运算符,您需要检查参数的二进制表示形式。
考虑two's complement代表,
-8
具有表示1111111111111000
7
具有表示0000000000000111
根据按位与的规则,产生的结果是0
,其计算结果为FALSY。因此,在您的情况下,if-else
条件归结为
if (0) // this is FALSE
{
printf("Always\n");
}
else // else block gets executed
{
printf("False\n"); // so this is printed
}
这就是为什么,else
block 被执行,并且您会看到 False
被打印出来。
关于c - 如果 -8 & 7 不为 0,为什么输出为 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53374269/