Why the range of
-128 t0 127
You are mistaken. The guaranteed minimum value for signed char is in fact -127 in both languages. Quote from C11 standard (draft N1570):
minimum value for an object of type signed char
Do note that the actual absolute minimum value is implementation defined and may be greater:
... Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
And on processors that have 8 bit byte and two's complement representation (which is rather common), the minimum value will almost certainly be -128 in both C and C++. The reason why only -127 is guaranteed, is because it allows a non two's complement representation to be supported.