title: Why doesn't the bitwise & operator short-circuit?
body: <p>We all know that the logical <code>&amp;&amp;</code> operator short circuits if the left operand is <code>false</code>, because we know that if one operand is <code>false</code>, then the result is also <code>false</code>.</p>
  
  <p>Why doesn't the bitwise <code>&amp;</code> operator also short-circuit? If the left operand is <code>0</code>, then we know that the result is also <code>0</code>. Every language I've tested this in (C, Javascript, C#) evaluates both operands instead of stopping after the first.</p>
  
  <p>Is there any reason why it would be a bad idea the let the <code>&amp;</code> operator short-circuit? If not, why don't most languages make it short-cicuit? It seems like an obvious optimization.</p>