为什么以下代码输出1
而不是0
? a || b
应该给我1
而1 && 0
是0
,对吗?我不认为从右到左评估逻辑运算。
int main()
{
printf("%d\n", 1 || 1 && 0);
return 0;
}
答案 0 :(得分:7)
&&
的优先级高于||
。 (就像乘法的优先级高于加法。)
答案 1 :(得分:3)
这是因为运营商优先。在C中,&&运算符的优先级高于||运算符,因此首先进行评估。
答案 2 :(得分:0)
这来自逻辑思维开发(布尔算术),甚至可能来自使用晶体管 - 晶体管逻辑和低级硬件语言(例如VHDL)的硬件设计。我们通常做两层逻辑,第一层是AND,第二层是OR。最典型的情况是电路最小化[1]。
通常,您将输入信号组合组合为AND端口输入,将AND端口输出组合为OR端口输入。