问我开始考虑多国字符集的问题,并且我担心使sizeof(char)成为 2 以便表示 16 位字符集。
答如果类型char被设置为 16 位,sizeof(char)仍然是 1,并且CHAR_BIT中<limits.h>将是 16,并且声明(或用malloc)一个 8 位对象将变得不可能。
传统上,字节并不一定就是 8 位,而只是内存中一个较小的区域,通常适合存储一个字符。C 标准遵循这种用法,因此malloc和sizeof使用的字节可能超过 8 位。[脚注](标准不允许它们小于 8 位。)
为了在不要求扩展类型的情况下处理多国字符集char,ANSI/ISO C 定义了“宽”字符类型wchar_t,以及相应的宽字符串字面量,以及用于处理和转换宽字符字符串的函数。
另见问题 7.8。
参考文献:ISO 节 5.2.1.2、节 6.1.3.4、节 6.1.4、节 7.1.6、节 7.10.7、节 7.10.8
Rationale 节 2.2.1.2
H&S 节 2.7.3 pp. 29-30、节 2.7.4 p. 33、节 11.1 p. 293、节 11.7,11.8 pp. 303-310