title: why byte += 1 compile but byte = byte + 1 not?
body: <p>If I have a byte variable: <code>byte b = 0;</code> </p>
  
  <p>why does the following work:</p>
  
  <pre><code>   b++;
     b += 1; // compiles
  </code></pre>
  
  <p>... but this does not ?</p>
  
  <pre><code>   b = b + 1; // compile error
  </code></pre>
  
  <p>Does compiler understand first as <code>byte</code> and second as <code>int</code> ?</p>
  
  <p><strong>[EDIT]</strong></p>
  
  <p>I know casting but I want to draw your attention to the <code>b++, b += 1 and b = b + 1</code></p>
  
  <p>I think they are equal so why compiler differs them ? what is the difference between </p>
  
  <pre><code>  b += 1 and b = b + 1 ?
  </code></pre>