I am starting to think about multinational character sets ....


I'm starting to think about multinational character sets, and I'm worried about the implications of making sizeof(char) be 2 so that 16-bit character sets can be represented.

✍: Guest


If type char were made 16 bits, sizeof(char) would still be 1, and CHAR_BIT in <limits.h> would be 16, and it would simply be impossible to declare (or allocate with malloc) a single 8-bit object.
Traditionally, a byte is not necessarily 8 bits, but merely a smallish region of memory, usually suitable for storing one character. The C Standard follows this usage, so the bytes used by malloc and sizeof can be more than 8 bits. (The Standard does not allow them to be less.)
To allow manipulation of multinational character sets without requiring an expansion of type char, ANSI/ISO C defines the ``wide'' character type wchar_t, and corresponding wide string literals, and functions for manipulating and converting strings of wide characters.

2016-03-02, 964👍, 0💬