#include <stdio.h>
int main()
{
int a = 60; // 0011 1100
int b = 13; // 0000 1101
int c = 0;
c = a || b;
printf("%d",c);
return 0;
}
我的代码的输出是 1。谁能解释它是如何工作的?
#include <stdio.h>
int main()
{
int a = 60; // 0011 1100
int b = 13; // 0000 1101
int c = 0;
c = a || b;
printf("%d",c);
return 0;
}
我的代码的输出是 1。谁能解释它是如何工作的?
在这份声明中
c = a || b; // 0011 1101
||
如果任一操作数不等于 0,则使用逻辑 OR 运算符产生 1。
来自 C 标准(6.5.14 逻辑或运算符)
3 || 如果任一操作数比较不等于 0,则运算符应产生 1;否则,它产生 0。结果具有 int 类型。
按位包含 OR 运算符|
的写法如下
c = a | b; // 0011 1101
如果你会这样写
c = a | | b;
如果符号之间有空格,'|'
则编译器将发出错误。您不能使用这种方式任何二元运算符,因为这样的运算符需要运算符左侧和右侧的操作数。
当然,如果你会写例如
c = a + + b;
那么第一个运算符+
是二元加号,第二个运算符+
是一元加号运算符。也就是说没有两个连续的二元运算符+
。
您不应将逻辑运算符||
与&&
位运算符|
和&
.