im curious as to the why there is a signed version of char and unsigned version? what are the purposes??

Well if you needed negative values then you would use signed char.

>um ok...um ok...
You were expecting some sort of mystery of the universe? The difference is that signed types use half of the range for negative values. With unsigned types you have a wider positive range, and a guarantee of wrapping on overflow/underflow.

if you are trying to be really efficient with the amount of ram you are using and you need a variable that would hold anything from -10 to 10 then a singed char would work and you are only using 1 byte of memory.