each code point takes 1 to 4 bytes. Furthermore, a "character" may require more than one code point (for instance with combining characters), depending on what is meant by the word "character". The fact that a character was historically stored in a single byte led to the two terms ("char" and "character") being used interchangeably in most documentation. This often makes the documentation confusing or misleading when multibyte encodings such as UTF-8 are used, and has led to inefficient and incorrect implementations of string manipulation functions (such as computing the "length" of a string as a count of code units rather than bytes). Modern POSIX documentation attempts to fix this, defining "character" as a sequence of one or more bytes representing a single graphic symbol or control code, and attempts to use "byte" when referring to char data. However it still contains errors such as defining an array of char as a character array (rather than a byte array). Unicode can also be stored in strings made up of code units that are larger than char. These are called "wide characters". The original C type was called . Due to some platforms defining wchar_t as 16 bits and others defining it as 32 bits, recent versions have added char16_t, char32_t. Even then the objects being stored might not be characters, for instance the variable-length UTF-16 is often stored in arrays of char16_t. Other languages also have a char type. Some such as C++ use 8 bits like C. Others such as Java use 16 bits for char in order to represent UTF-16 values. See also Character literal Character (symbol) Fill character Combining character Universal Character Set characters Homoglyph References External links Characters: A Brief Introduction by The Linux Information Project (LINFO) ISO/IEC TR 15285:1998 summarizes the ISO/IEC's character model, focusing on terminology definitions and differentiating between characters and glyphs Character encoding Data types Digital typography Primitive types