Question

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_

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top