I was told the following
was equivalent toCode:if ( (a && b) || (!a && !b) )
Can someone explain to me how they arrive at this answer? I really don't see the steps involved.Code:if(!!a == !!b)
Printable View
I was told the following
was equivalent toCode:if ( (a && b) || (!a && !b) )
Can someone explain to me how they arrive at this answer? I really don't see the steps involved.Code:if(!!a == !!b)
The first expression evaluates to true if both a and b are true, or if neither a nor b are true. Since any non-zero value is true, then you cannot just condense this to "a == b". But if you double-negate, then a true value negates to zero, then negates to one, and then the comparison will work.
If only we had a logical XOR (as opposed to bitwise), we could say:
But alas we don't.Code:if( ! ( a ^^ b ) )
Okay. I get it.
It could be further simplified to either:
!a == !b
- or -
!( !a ^ !b )