title: Question about test_bit macro in C
body: <p>I've used the following macro in C:</p>
  
  <pre><code>#define   test_bit(_n,_p)     !! ( _n &amp; ( 1u &lt;&lt; _p))
  </code></pre>
  
  <p>I've studied the macro but I need to determine the use of the double negative in the macro, and how it behaves differently from the macro definition :</p>
  
  <pre><code>#define   test_bit(_n,_p)     ( _n &amp; ( 1u &lt;&lt; _p))
  </code></pre>