title: Maximum value of unsigned char
body: <pre><code>#include &lt;stdio.h&gt;
  int main()
  {
      unsigned char i=0x80;
      printf("%d",i&lt;&lt;1);
      return 0;
  }
  </code></pre>
  
  <p>Why does this program print 256? </p>
  
  <p>As I understand this, since 0x80= 0b10000000, and unsigned char has 8 bits, the '1' should overflow after left shift and the output should be 0, not 256.</p>