根据 C 标准,int 的大小是多少?

According to the C standard, what is the size of an int?

我知道现在几乎所有编译器都使用 4 个字节作为 int,但如果我没记错的话,情况并非总是如此。

我还知道在 Intel 架构上,int 的大小总是与 CPU 匹配。例如,在 8 位 CPUs 上,一个 int 是 8 位。

我的问题是,如果有的话,C 标准必须说明 int 的大小吗?

My question is what, if anything, does the C standard have to say about the size of an int?

“普通”int object 具有建议的自然大小 执行环境的体系结构(大到足以包含范围内的任何值 INT_MIN 到 INT_MAX 如 header 中所定义。

它们的 implementation-defined 值应等于或大于显示的值(绝对值),具有相同的符号。

— int 类型的 object 的最小值 INT_MIN -32767 // −(2^15 − 1)

— int 类型的 object 的最大值 INT_MAX +32767 // 2^15 − 1

所以您不能在兼容的实现上使用 8 位 int

根据 C 标准 ISO/IEC 9899(最新版本是 2018),integer 的大小是实现定义的。

同样,char 的大小同样是实现定义的——不一定是 8 位!