就这样.我没有找到任何类似的话题,所以请耐心听我说.

推荐答案

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.

C++相关问答推荐

在C、Linux中同步进程

如何将匿名VLA分配给指针?

为什么listen()(在调用accept()之前)足以让应用程序完成3次握手?

理解没有返回语句的递归C函数的行为

为什么getchar()挂起了,尽管poll()返回了一个好的值?""

手动矢量化性能差异较大

将 typewriter LF打印到Windows终端,而不是隐含的CR+LF

数据包未从DPDK端口传输到内核端口

使用NameSurname扫描到两个单独的字符串

如何一次获取一个字符

Tic-tac-toe:从文件加载存储

使用%f格式说明符打印整数值

初始成员、公共初始序列、匿名联合和严格别名如何在C中交互?

Go和C中的数据 struct 对齐差异

C:如何将此代码转换为与数组一起使用?

Linux分段故障(核心转储)

解密Chrome加密密钥

分支预测和UB(未定义的行为)

C 语言中 CORDIC 对数的问题

在 C23 之前如何对空指针使用nullptr?