hi,
Is there any C compiler which takes the default type of char as unsigned unless explicitly mentioned by the user in the file or project settings?
/Kanu_
hi,
Is there any C compiler which takes the default type of char as unsigned unless explicitly mentioned by the user in the file or project settings?
/Kanu_
The standard does not specify if plain char is signed or unsigned.
http://stackoverflow.com/questions/2054939/char-is-signed-or-unsigned-by-default/2054941#2054941
There is usually an option to set it as default, but no compiler of my knowledge does that.
GCC does. But only when compiling for platforms where an unsigned char is the convention, including ARM linux[*]. When GCC compiles for x86, the default is for char to be signed.
[*] Or at least it has been in the past. For all I know linux has switched to a different default ABI on ARM since.
The standard requires that the integer value of all characters required by the standard (A-Z, a-z, 0-9, basic punctuation, etc.) be positive, so any system using an encoding where these characters' values are outside the range of signed char
must have plain char
be unsigned. I believe this means all EBCDIC systems must have a plain char
that's unsigned, but I may be mistaken.