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 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.
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.
Update '2013: ARM compilers (gcc, clang) for Android NDK default to unsigned char
. The x86 and MIPS compilers default to signed char
.