在引用逐位运算符时,有什么区别!和〜?我觉得他们都翻了一下,但是1可能会给最后的答案增加1分?
~0xC4
compared to
!0xC4
Run Code Online (Sandbox Code Playgroud)
谢谢!
当我尝试运行以下代码时,它显示“ FALSE”而不是“ TRUE”。有人可以解释为什么代码返回false吗?
#include <stdio.h>
int main(void)
{
if(-8 & 7)
{
printf("TRUE");
}
else
{
printf("FALSE");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 鉴于此声明是一种逻辑操作
((a > 5) && (b > 4))
Run Code Online (Sandbox Code Playgroud)
这句话是按位运算
((a > 5) & (b > 4))
Run Code Online (Sandbox Code Playgroud)
以上两个陈述并不等同.
因为(a > 5)是元素{0,1}
那么,我们为什么需要logical operators & bitwise-operation呢?
编辑:感谢所有的反馈.关于逻辑运算符的短路行为,我实际上不希望这种行为 - 我正在为GPU编写代码,其中分支会降低性能:短路导致两个分支而不是代码中的一个分支.
对于C中的数值比较,在不需要短路的情况下,似乎逻辑和按位具有相同的行为.在我的例子中,按位运算比逻辑快.
我为没有将这些细节放在原始帖子中而道歉.