Hi
On Fri, Jul 1, 2016 at 8:57 AM, Mark Brown broonie@kernel.org wrote:
On Thu, Jun 30, 2016 at 03:51:51PM +0800, John Hsu wrote:
Yes, it'll be more readable. I have a question. Why to add !! in front of bit wise operation? What does it mean?
It's redundant in almost all cases. It translates an integer value into a 0/1 value (so if you've got a value of 2 it'll end up as 1) by doing a double not. This very rarely matters unless you're storing the value in an integer and comparing it to 1 to check for truth, otherwise C will translate any non-zero value into true in any logic context.
Thanks Mark for the comment. I added "!!" by following my muscle memory. That how I used to convert non-bools to bool.
But your comment forced me to research this question. C99 and C11 standards clarify this issue http://port70.net/~nsz/c/c11/n1570.html#6.3.1.2p1
..<QUOTE>.. When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1
It is safe to drop "!!" idiom completely - compiler will take care of converting the result of bitmask to a proper bool value. My example above can be overwritten as bool active_high = jkdet & NAU8825_JACK_POLARITY; bool is_high = status & NAU8825_GPIO2JD1; return active_high == is_high;