38

在维基百科Stroustrup 的常见问题解答中说 typelong long至少与 an 一样长int并且不少于 64 bits。我一直在查看 C++11 标准 §3.9.1 基本类型部分,但找不到任何对 64 位的引用。我所能找到的只是它至少和 一样长long int,至少和 一样长int。标准列出long long标准整数类型,而不是扩展类型,所以我想知道这个long long至少包含 64 位的断言是否正确。如果是,它在哪里说明?
请注意,我只是在谈论 C++11 标准long long

4

1 回答 1

37

C++ 标准为此引用了 C 标准,请参阅 [c.limits]。LLONG_MAX的定义与 C's的<climits>含义相同。这就是 C 必须说的:<limits.h>LLONG_MAX

5.2.4.2.1 整数类型的大小<limits.h>

下面给出的值应替换为适用于#if预处理指令的常量表达式。[...] 它们的实现定义值的大小(绝对值)应等于或大于所示值,且符号相同。

[...]

-- 类型对象的最大值long long int

LLONG_MAX +9223372036854775807 //2 63 -1

必须能够表示值的有符号类型9223372036854775807需要 64 位或更多位。

于 2012-04-07T09:17:23.673 回答