title: Why does C/C++ automatically convert char/wchar_t/short/bool/enum types to int?
body: <p>So, if I understood it well, integral promotion provides that: <code>char, wchar_t, bool, enum, short</code> types ALWAYS are converted to <code>int</code> (or <code>unsigned int</code>). Then, if there are different types in an expression, further conversion will be applied.</p>
  
  <p>Am I understanding this well?</p>
  
  <p>And if yes, then my question: Why is it good? Why? Don't become <code>char/wchar_t/bool/enum/short</code> unnecessary? I mean for example:</p>
  
  <pre><code>char c1;
  char c2;
  c1 = c2;
  </code></pre>
  
  <p>As I described before, <code>char</code> ALWAYS is converted to <code>int</code>, so in this case after automatic converting this looks like this:</p>
  
  <pre><code>int c1;
  int c2;
  c1 = c2;
  </code></pre>
  
  <p>But I can't understand why is this good, if I know that <code>char</code> type will be enough for my needs.</p>