在 C 中, (x==y==z) 的行为是否符合我的预期?

发布于 2024-10-06 03:50:40 字数 276 浏览 2 评论 0原文

我可以比较如下三个变量,而不是执行 if((x==y)&&(y==z)&&(z=x)) 吗? [如果所有三个变量具有相同的值,则应执行 if 语句。这些是布尔值。]

if(debounceATnow == debounceATlast == debounceATlastlast)
{
 debounceANew = debounceATnow;
}
else
{
 debounceANew = debounceAOld;
}

Can I compare three variables like the following, instead of doing if((x==y)&&(y==z)&&(z=x))? [The if statement should execute if all three variables have the same value. These are booleans.]

if(debounceATnow == debounceATlast == debounceATlastlast)
{
 debounceANew = debounceATnow;
}
else
{
 debounceANew = debounceAOld;
}

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

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

发布评论

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

评论(3

太傻旳人生 2024-10-13 03:50:40

不,事实并非如此。

x == y 转换为 int,产生 01,并将结果与​​z进行比较。因此,当且仅当(x 等于 y 并且 z 为 1)或(x 不等于 y 并且 z 为 0)x==y==z 才会产生 true /code>

你想做的是

if(x == y && x == z)

No, it does not.

x == y is converted to int, yields 0 or 1, and the result is compared to z. So x==y==z will yield true if and only if (x is equal to y and z is 1) or (x is not equal to y and z is 0)

What you want to do is

if(x == y && x == z)
安穩 2024-10-13 03:50:40

否。相等性检查从左开始关联,逻辑结果作为数字进行比较,因此表达式 2 == 2 == 1 解析为 (2 == 2) == 1,这又给出 1 == 1 并产生 1,这可能不是您想要的。

No. The equality check associates from the left and the logical result is compared as a number, so that the expression 2 == 2 == 1 parses as (2 == 2) == 1, which in turn gives 1 == 1 and results in 1, which is probably not what you want.

我家小可爱 2024-10-13 03:50:40

你实际上可以输入这样的内容:

int main()
{
        const int first = 27,
                  second = first,
                  third = second,
                  fourth = third;
        if (!((first & second & third) ^ fourth))
            return 1;
        return 0;
}

You can actually type something like this:

int main()
{
        const int first = 27,
                  second = first,
                  third = second,
                  fourth = third;
        if (!((first & second & third) ^ fourth))
            return 1;
        return 0;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文