我可以比较以下三个变量,而不是if((x==y)&&(y==z)&&(z=x))
吗? [如果所有三个变量具有相同的值,则应执行if语句。这些是布尔。]
if(debounceATnow == debounceATlast == debounceATlastlast)
{
debounceANew = debounceATnow;
}
else
{
debounceANew = debounceAOld;
}
答案 0 :(得分:33)
不,它没有。
x == y
转换为int,产生0
或1
,并将结果与z
进行比较。因此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)
答案 1 :(得分:6)
没有。左侧的相等性检查关联,逻辑结果与数字进行比较,因此表达式2 == 2 == 1
解析为(2 == 2) == 1
,后者又提供1 == 1
并生成1
},这可能不是你想要的。
答案 2 :(得分:1)
您实际上可以键入以下内容:
int main()
{
const int first = 27,
second = first,
third = second,
fourth = third;
if (!((first & second & third) ^ fourth))
return 1;
return 0;
}