布尔 AND 和 OR 运算

发布于 2024-12-04 14:06:36 字数 255 浏览 0 评论 0原文

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

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

Why does the following code output 1, instead of 0? a || b should give me 1 and 1 && 0 is 0, right? I don't think logical operations evaluated from right to left.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

歌枕肩 2024-12-11 14:06:36

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

&& has higher precedence than ||. (Like how multiplication has higher precedence than addition.)

や莫失莫忘 2024-12-11 14:06:36

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

This is because of operator precedence. In C, the && operator has higher precedence than the || operator so it is evaluated first.

扮仙女 2024-12-11 14:06:36

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

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

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

This comes from logical thinking development (boolean arithmetic), maybe even from hardware design using transistor-transistor-logic and lower level hardware languages (VHDL, for instance). We usually do two layer logics, first layer of AND's and second of OR's. The most typical situation being circuit minimization [1].

Typically, you combine input signals combinations as AND-ports inputs, and AND-ports outputs as OR-port inputs.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文