Why does C/C++ automatically convert char/wchar_t/short/bool/enum types to int?

Viewed 1912

So, if I understood it well, integral promotion provides that: char, wchar_t, bool, enum, short types ALWAYS are converted to int (or unsigned int). Then, if there are different types in an expression, further conversion will be applied.

Am I understanding this well?

And if yes, then my question: Why is it good? Why? Don't become char/wchar_t/bool/enum/short unnecessary? I mean for example:

char c1;
char c2;
c1 = c2;

As I described before, char ALWAYS is converted to int, so in this case after automatic converting this looks like this:

int c1;
int c2;
c1 = c2;

But I can't understand why is this good, if I know that char type will be enough for my needs.

6 Answers
Related