In fact char, signed charand unsigned charare three different types. From the standard (ISO / IEC 9899: 1990):
6.1.2.5 Types
...
The three types are char , signed char and unsigned char are collectively called character types.
(and in C ++, for example, you should (or at least should) write override functions with three variants of them, if you have a char argument)
A regular char can be handled by a signed or unsigned compiler, but the standard says (also in 6.1.2.5):
, char, . 5.2.1 char, . char, : .
, , char, , '' plain '' char.
, 5.2.1, A-Z, a-z, 0-9, , , 29 :
! " # % & ' ( ) * + , - . / :
; < = > ? [ \ ] ^ _ { | } ~
, , , ascii 128 . , , , 128, ( ), .