title: Why do C#'s binary operators always return int regardless of the format of their inputs?
body: <p>If I have two <code>byte</code>s <code>a</code> and <code>b</code>, how come:</p>
  
  <pre><code>byte c = a &amp; b;
  </code></pre>
  
  <p>produces a compiler error about casting byte to int?  It does this even if I put an explicit cast in front of <code>a</code> and <code>b</code>.</p>
  
  <p>Also, I know about <a href="https://stackoverflow.com/questions/2215745/conditional-operator-cannot-cast-implicitly">this question</a>, but I don't really know how it applies here.  This seems like it's a question of the return type of <code>operator &amp;(byte operand, byte operand2)</code>, which the compiler should be able to sort out just like any other operator.</p>