从a copy of the ANSI C specification开始,见Section 3.1.2.5 - Types:
声明为char类型的对象为 大到足以存储其任何成员 基本执行字符集.如果 所需来源的成员 $2.2.1中列举的字符集是 存储在char对象中,其值为 保证是阳性的.如果是其他 数量存储在一个字符中 对象,则行为是 实现定义:值为 被视为已签名或 非负整数.
"执行字符集"的概念是在Section 2.2.1 - Character sets年引入的.
换句话说,字符必须至少足够大,以包含组成基本执行字符集的至少95个不同字符的编码.
现在再加上第2.2.4.2 - Numerical limits条
一致性实施应:
Sizes of integral types 个
下面给出的值应为 替换为常量表达式 适合在#IF预处理中使用 指令.他们的 实现定义的值应为 大小相等或更大的 (绝对值)与所显示的值相同,并带有 同样的牌子.
最小值的最大位数
类型的对象的最小值
类型的对象的最大值
类型的对象的最大值
....
所以你有了它——字符中的位数必须是at least8.