C ++标准对基本类型的大小有何保证?

时间:2019-09-22 15:12:18

标签: c++ language-lawyer

我试图了解C ++标准对各种基本类型的位大小所保证的内容。为了解决这个问题,我们只需要担心boolcharshortintlonglong long,{{1 }}和float

我了解到,实际上,这些类型的大小很少会偏离狭窄的可能性范围。这个问题是关于标准所保证的。

这是我从the standard中提炼出来的规则:

  1. double被定义为一个字节(5.3.3.1)。一个字节必须至少具有8位,因为它必须能够包含“ Unicode UTF-8编码形式的八位代码单元”(1.7.1)。
  2. char。鉴于上述情况,这意味着这五种类型必须分别至少为8位。

根据cppreference.com,这些附加规则适用:

  1. sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)必须为> = 16位
  2. short必须为> = 32位
  3. long必须为> = 64位

但是,我找不到这些规则在标准中的规定位置。它们不在我可能期望的3.9.1.2中,实际上5.3.3.1说:“ sizeof的结果适用于[long longchar或{{ 1}}]是实现定义的。”

该标准实际上施加了规则3、4和5吗?我对规则1和2正确吗?还有关于这些基本类型中任何一种的位大小的其他规则吗?

0 个答案:

没有答案
相关问题