character in C++

Type | Storage size | Value range
--- | --- | --- 
char | implementation-defined, usually 1 byte |  -2<sup>7</sup> to 2<sup>7</sup>-1 or 0 to 2<sup>8</sup>-1 
unsigned char | implementation-defined, usually 1 byte | 0 to 2<sup>8</sup>-1
signed char | implementation-defined, usually 1 byte | -2<sup>7</sup> to 2<sup>7</sup>-1
wchar_t | 2 or 4 bytes | 1 wide character

Notes:
* Objects declared as characters (char) shall be large enough to store any member of the implementation’s basic character set. A char, a signed char, and an unsigned char occupy the same amount of storage.
* Plain char, signed char, and unsigned char are three distinct types. It is implementation-defined whether a char object can hold negative values.

```
#include <iostream>
#include <type_traits>
 
int main() {
    std::cout<<std::is_signed<char>::value; // 0 or 1
    std::cout<<std::is_same<char, signed char>::value;  //always 0
    std::cout<<std::is_same<char, unsigned char>::value;  //always 0
}
```