You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++11标准中规定基本数据类型大小相对顺序的章节在哪?是否继承自C?

C++标准中整数类型的大小关系规定

好问题!关于C++里整数类型的大小关系,其实标准里有明确的依据,而且和C标准的关联也很清晰,咱们来拆解清楚:

1. C++标准自身的直接规定

在C++11的官方代理文档n3337里,§3.9.1 Fundamental types的第2段明确写道:

There are five standard signed integer types: “signed char”, “short int”, “int”, “long int”, and “long long int”. In this list, each type provides at least as much storage as those preceding it in the list.

无符号整数类型也遵循同样的规则:每个无符号类型的存储容量不少于列表中排在它前面的类型。

这里的“存储容量”直接对应sizeof的结果——因为sizeof返回的是类型占用的字节数,而每个字节至少包含8位(这也是标准规定的),所以存储容量的大小关系直接转化为sizeof的不等式:

  • sizeof(short int) <= sizeof(int)
  • sizeof(int) <= sizeof(long int)
  • sizeof(long int) <= sizeof(long long int)

这些就是你提到的大小关系的直接来源,可能你之前看文档时没注意到这个章节的描述,它没有直接写sizeof的不等式,但逻辑上完全等价。

2. 与C标准的继承关系

C标准确实会继承C标准的相关内容,比如在n3337的**§1.2 Normative references**里,明确引用了C99标准(文档编号n1256)。而C99的§5.2.4.2.1里规定的各整数类型的最小、最大值,也间接支撑了C里的大小关系——因为C++的整数类型不能比C标准规定的更小,这也从侧面保证了类型之间的存储容量顺序。

不过要注意,C++自身的条款已经足够明确这些大小关系,继承C标准更多是补充和一致性的保障。

总结

  • C++标准自身通过规定整数类型的存储容量顺序,直接确立了sizeof的大小不等式;
  • 这些规则对有符号和无符号整数类型都适用;
  • 虽然C继承了C标准的相关内容,但核心的大小关系在C自己的标准里就有明确表述。

内容的提问来源于stack exchange,提问作者Lone Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:05:22