【发布时间】:2014-11-19 23:53:14
【问题描述】:
假设我想编写一个最小标准编译器,并且我已经到了需要实现整数类型的地步。我假设我可以根据此表最小化整数类型的大小是否正确?
char:标准要求sizeof(char) 始终为 1。因此为 1 个字节。
short: 必须至少有 2 个字节。因此是 2 个字节。
int:不能小于short。因此 2 个字节。
long:不得小于int。因此 2 个字节。
long long: 必须长于long。因此 17 位(即 -65536 到 +65535)如果我实现双恭维:我认为这是我可以做出的选择)。
bool: 标准没有指定尺寸。因此 1 位。
我知道我不需要支持 std::int64_t 及其未签名的表亲。我需要支持std::int32_t 还是编译器自行决定?
【问题讨论】:
-
en.wikipedia.org/wiki/C_data_types - 你在要求上有点偏离(链接页面适用于 C,但适用于 C++)。
-
@mat:您的链接有帮助。除非您想作为答案,否则我将删除该问题。
-
-1,不敢相信你还不知道你的数据类型大小。这个周末读一本书;-)
-
阅读这个:cplusplus.com/reference/climits,记住数据类型的大小取决于您的平台和您平台编译器套件上可用的 climits
-
@SlodgeMonster:如果您想构建一个标准编译器,请使用标准作为参考。出于对{插入至高无上的选择}的热爱,不要依赖 MS 来参考 任何东西(除了 MS API,甚至可能不是)...这不是对 MS 的厌恶,而是多年对 MS 处理(又名,忽略)标准的傲慢方式的经验。
标签: c++