繁体   English   中英

在C中,(x == y == z)的行为与我期望的一样吗?

[英]In C, does (x==y==z) behave as I'd expect?

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

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

不,不是的。

x == y转换为int,得到01 ,并将结果与z进行比较。 因此,当且仅当(x is equal to y and z is 1) or (x is not equal to y and z is 0) x==y==z将产生真(x is equal to y and z is 1) or (x is not equal to y and z is 0)

你想做的是

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

否。等式检查从左侧关联,逻辑结果与数字进行比较,因此表达式2 == 2 == 1解析为(2 == 2) == 1 ,这反过来给出1 == 1结果为1 ,这可能不是你想要的。

你可以输入这样的东西:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM