Looking at the standard, there are actually 3 ways to define a char:
- signed char
- unsigned char
There are no specificatoins regarding what "char" will be interperted as either "signed char" or "unsigned char". This is left to the OS/Compiler to choose.
Solaris: int8_t --> char
Linux: int8_t --> signed char
You can check here: http://en.cppreference.com/w/cpp/language/types
char - type for character representation which can be most efficiently processed on the target system (has the same representation and alignment as either signed char or unsigned char, but is always a distinct type). Multibyte characters strings use this type to represent code units.