It is fundamental to the correct usage of functions such as malloc and fread that sizeof(char) be exactly one. In practice, this means that a byte in C terms is the smallest unit of storage, even if this unit is 36 bits wide; and all objects are composed of an integer number of these smallest units.
Rationale for International Standard— Programming Languages— C Revision 5.10 April-2003
другими словами, sizeof(char) == 1, но размер char в битах может быть больше 8