Re: [PATCH] ASoC: nau8825: jack connection decision with different insertion logic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux