Reputation: 297
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;
}
Upvotes: 11
Views: 5424
Reputation: 1447
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;
}
Upvotes: 1
Reputation: 132984
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)
Upvotes: 34
Reputation: 104065
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.
Upvotes: 6