title: Logic: is ( A && !(B || C)) || ( B || C ) the same as ( A || B || C )?
body: <p>I've encountered some obj-c code and I'm wondering if there's a way to simplify it:</p>
  
  <pre><code>#if ( A &amp;&amp; !(B || C)) || ( B || C )
  </code></pre>
  
  <p>is this the same as?</p>
  
  <pre><code>#if ( A || B || C )
  </code></pre>
  
  <p>If not, is there another way to formulate it that would be easier to read?</p>
  
  <p>[edit]
  I tried the truth table before asking the question, but thought I had to be missing something because I doubted that Foundation.framework/Foundation.h would employ this more complex form.   Is there a good reason for it?</p>
  
  <p>Here's the original code (from Foundation.h):</p>
  
  <pre><code>#if (TARGET_OS_MAC &amp;&amp; !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)
  </code></pre>