我试图找出C++标准是否规定了各种类型的大小之间的关系。例如,这个答案位于https://stackoverflow.com/a/589599/1175080 https://stackoverflow.com/a/589599/1175080似乎声称:
sizeof(short int) <= sizeof(int) <= sizeof(long int)
另一个答案在https://stackoverflow.com/a/589684/1175080 https://stackoverflow.com/a/589684/1175080有类似的说法:
sizeof(int) <= sizeof(long)
我正在经历n3337.pdf http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf(我相信 C+11 标准的一个很好的代表)但我找不到保证这些不平等的特定语言。
In n1256 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf(C99),我可以在章节中找到具体的语言5.2.4.2.1 尺寸
整数类型它清楚地说明了每种类型的最小值和最大值,间接建立了尺寸之间的相对顺序。
这些不等式是在 C++ 标准中类似定义的还是直接从 C 继承的?标准中的语言在哪里?
在 n3337 中,该部分是3.9.1 https://timsong-cpp.github.io/cppwp/n3337/basic.types#basic.fundamental, [基础.基础]/2 https://timsong-cpp.github.io/cppwp/n3337/basic.fundamental#2,第二段(重点是我的):
有五种标准的有符号整数类型:“signed char”、“short int”、“int”、“long int”和“long long int”。在这份名单中,每种类型至少提供与其前面的列表一样多的存储空间。还可能存在实现定义的扩展有符号整数类型。标准和扩展有符号整数类型统称为有符号整数类型。普通整数具有执行环境架构所建议的自然大小44;提供其他有符号整数类型以满足特殊需求。
注意5.2.4.2/1 http://port70.net/~nsz/c/c11/n1570.html#5.2.4.2.1C 标准中只定义了每个整数类型的最小范围,它不强制排序 - 我可以int
从 -32767 到 32767 以及short
从 -2147483647 到 2147483647 并且仍然符合本节。
However 6.2.5.8 http://port70.net/~nsz/c/c11/n1570.html#6.2.5p8更加明确:
对于任何两个具有相同符号和不同整数转换等级的整数类型(参见6.3.1.1),具有较小整数转换等级的类型的值的范围是另一个类型的值的子范围。
And 6.3.1.1 http://port70.net/~nsz/c/c11/n1570.html#6.3.1.1告诉你:
long long int 的等级应大于 long int 的等级,long int 的等级应大于 int 的等级,int 的等级应大于 Short int 的等级,short int 的等级应大于signed char 的等级。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)