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?
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
.