根据 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 位!
我知道现在几乎所有编译器都使用 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 位!