Is there any C compiler which takes the default type of char as unsigned unless explicitly mentioned b开发者_开发问答y the user in the file or project settings?
/Kanu_
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
.
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.
精彩评论