布尔AND和OR运算

时间:2011-09-14 03:40:07

标签: c binary

为什么以下代码输出1而不是0a || b应该给我11 && 00,对吗?我不认为从右到左评估逻辑运算。

int main()
{
    printf("%d\n", 1 || 1 && 0);
    return 0;
}

3 个答案:

答案 0 :(得分:7)

&&的优先级高于||。 (就像乘法的优先级高于加法。)

答案 1 :(得分:3)

这是因为运营商优先。在C中,&&运算符的优先级高于||运算符,因此首先进行评估。

答案 2 :(得分:0)

这来自逻辑思维开发(布尔算术),甚至可能来自使用晶体管 - 晶体管逻辑和低级硬件语言(例如VHDL)的硬件设计。我们通常做两层逻辑,第一层是AND,第二层是OR。最典型的情况是电路最小化[1]。

通常,您将输入信号组合组合为AND端口输入,将AND端口输出组合为OR端口输入。

[1] http://en.wikipedia.org/wiki/Circuit_minimization