title: How can static_cast can cast an int to char but not reinterpret_cast?
body: <p>I'm not sure if it has been asked earlier, but must have been I believe. Consider the simple line for start of question :</p>
  
  <pre><code>int a ;
  char b = reinterpret_cast&lt;char&gt; (a);
  </code></pre>
  
  <p>I understand <code>reinterpret_cast</code> interpret the bits pattern of type x as type y, ofcouse it shouldn't work due to size mismatch and indeed it doesn't.</p>
  
  <p>Now consider this another code:</p>
  
  <pre><code>int a ;
  char b = static_cast&lt;char&gt; (a);
  </code></pre>
  
  <p>This works! . Now my question is how it can work ? I mean does the compiler chops off the bits? . I am certain <code>sizeof(char) &lt; sizeof(int)</code> . If that, <code>reinterpret_cast</code> should also work by same technique ?</p>