There is nothing called character datatype in C, char just happens to be the smallest integer type
Since char is an integer data type, same (in that regard) as int, short and other integer types, So, just like any other integer type, it can be signed or unsigned.
char is intended to be used to represent characters and represented by their integer "codes", only general difference between char and other integer types is that plain char is by default unsigned while other integer types are signed if not specified anything.