Q:

Logical equality in C

[It seems odd this doesn't exist, so apologies in advance if it's a duplicate]
I want to test for logical equality in C.  In other words, I want to know whether two values would be equal if both were converted in the normal way associated with logical expressions.
In C99, I think that
(bool)a == (bool)b

gives what I want.  Is that correct?  What is the normal way of writing this in traditional C?

A:

You typically see this:
if ((a == 0) == (b == 0))

Or
if (!!a == !!b)

Since !!a evaluates to 1 if a is nonzero and 0 otherwise.
Hope this helps!

A:

In C, zero is false. If you want to convert any value to its boolean equivalent, the standard way (well, except that there's almost never a need for it) is to prefix an expression with !! , as in !!a. In the case of your expression,
!!a == !!b
may be simplified to 
!a == !b

