The Three char Types
Go Up to Character Constants Overview Index
In C, single-character constants, such as 'A', '\t', or '007', are represented as int values. In this case, the low-order byte is sign extended into the high bit; that is, if the value is greater than 127 (base 10), the upper bit is set to -1 (=0xFF). This can be disabled by declaring that the default char type is unsigned.
The three character types, char, signed char, and unsigned char, require an 8-bit (one byte) storage. By default, the compiler treats character declarations as signed. Use the -K compiler option to treat character declarations as unsigned. The behavior of C programs is unaffected by the distinction between the three character types.
In a C++ program, a function can be overloaded with arguments of type char, signed char, or unsigned char. For example, the following function prototypes are valid and distinct:
void func(char ch); void func(signed char ch); void func(unsigned char ch);
If only one of the above prototypes exists, it will accept any of the three character types. For example, the following is acceptable:
void func(unsigned char ch);
void main(void)
{
signed char ch = 'x';
func(ch);
}
See Also
- Constants
- Integer Constants
- Floating Point Constants
- Character Constants
- Escape Sequences
- Wide-character And Multi-character Constants
- Unicode Character Types and Literals (C++11)
- String Constants
- Enumeration Constants
- Constants And Internal Representation
- Internal Representation Of Numerical Types
- Constant Expressions