Reading the C++ Primer 5th edition book, I noticed that a signed char with a value of 256 is undefined. I decided to try that, and I saw that
signed char
256
unsigned char values is (to be pedantic, usually) is from 0 to 255. There is 256 values, that 1 byte may hold.
unsigned char
If you get overflow (usually) values are used modulo 256, as other Integer type modulo MAX + 1
MAX + 1