Hi On Fri, Jul 1, 2016 at 8:57 AM, Mark Brown <broonie@xxxxxxxxxx> 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; _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel