【发布时间】:2018-05-24 09:43:40
【问题描述】:
我正在尝试查找 C++ 标准是否指定了各种类型的大小之间的关系。例如,https://stackoverflow.com/a/589599/1175080 的这个答案似乎声称:
sizeof(short int) <= sizeof(int) <= sizeof(long int)
https://stackoverflow.com/a/589684/1175080 的另一个回答也有类似的说法:
sizeof(int) <= sizeof(long)
我正在查看n3337.pdf(我相信这是 C+11 标准的良好代理),但我找不到保证这些不等式的特定语言。
在n1256 (C99) 中,我可以在 5.2.4.2.1 Sizes 部分找到具体的语言 整数类型清楚地说明了每种类型的最小值和最大值,从而间接建立了大小之间的相对顺序。
这些不等式是在 C++ 标准中类似定义还是直接继承自 C?标准中的语言在哪里?
【问题讨论】:
-
它们直接继承自 C,并且在 C++ 标准中得到保证和记录。一些语言律师可以很容易地为您指出正确的部分。
-
另见 18.3.3/2
-
N1256其实是C99+TC3
-
错过了 C++11 的焦点。如果有什么安慰的话,C++17 明确表示“它是由 C 标准指定的”。
-
@M.M 我一直想知道为什么C99标准和C99+TC3不一样?是否像软件版本中的 v1.0.0 与 v1.0.3。标准中的 C99+TC3 错误修复是否在 C99 之上?我看到open-std.org/jtc1/sc22/wg14/www/standards 只有一个指向 N1256.pdf 的链接。它们似乎没有提供指向实际 C99 文档的链接。