title: C left shift and assignment
body: <p>Please check the below pieced of code and let me know why this is not giving desired result.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  int main()
  {
    unsigned short y=0;
    unsigned char x=0xe0; //binary - 1110 0000
    unsigned char z=3;
  
    y = (x&lt;&lt; z);
    printf("\n y value is %x\n",y);
    return 0;
  }
  </code></pre>
  
  <p>I am expecting y should print 0x00 but it is printing 0x0700. Could you let me know how left shift and assignment operation working here ?</p>
  
  <p>Thanks</p>