In C,
...
int num = 'a';
...
My question is simple. How can you assign a character such as '0', 'a', 'b' to an integer type variable without getting any type error in C language?
For historical reasons (mostly), character constants are of type int in C.
But even if they weren't, an initialization like
int num = 'a';
or an assignment like
num = 'a';
would still be perfectly legal. A value of any numeric type may be assigned to a variable of any (other) numeric type, and the value will be implicitly converted (which may involve a change of representation and/or a risk of overflow).
And char, along with its relatives unsigned char and signed char, are numeric types, specifically integer types.
The character is only a representation of an integer value. For example, '0' can be written as 0x30 or 48, 'a' is an alternative for 0x61 or 97, etc.
So the assignment is perfectly valid.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With