title: what is char i=0x80 and why overflow did not happen in bit shifting
body: <p>Here is  a program</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  main()
  { unsigned char i=0x80;
  printf("i=%d",i&lt;&lt;1);
  }
  </code></pre>
  
  <p>The output it is giving is 256.
  I am not clear with what does </p>
  
  <pre><code>unsigned char i=0x80; &lt;-- i is not int it is char so what will it store?
  </code></pre>
  
  <p>I know bitshift and hexadecimal things.
  How is the value of i being stored and how does it gets changed to 256?</p>
  
  <p><strong>UPDATE</strong>  </p>
  
  <p>Why did overflow not occurred when the bit shift operation happened?</p>