[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 tw
There is no (bool)
in traditional c. True/False is handled using int
s. You can check for boolean equality with
a ? b : !b
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!
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
In pre-C99 C, the tradiitional, idiomatic way to "cast to bool" is with !!
.