It says on wikipedia and in Stroustrup's FAQ that type long long
is at least as long as an int
and has no fewer than 64 bits. I have been looking at the C++11 standard §3.9.1 Fundamental Types section and I cannot find any reference to 64 bits. All I can find is that it is at least as long at long int
, which is at least as long as int
. The standard lists long long
as a standard integer type, as opposed to an extended one, so I am wondering whether this assertion that long long
holds at least 64 bits is true. And if it is, where is it stated?
Please note that I am talking about C++11 standard long long
only.
The C++ standard references the C standard for this, see [c.limits]. LLONG_MAX
is defined in <climits>
with the same meaning as C's <limits.h>
's LLONG_MAX
. And this is what C has to say:
5.2.4.2.1 Sizes of integer types
<limits.h>
The values given below shall be replaced by constant expressions suitable for use in
#if
preprocessing directives. [...] Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.[...]
-- maximum value for an object of type
long long int
LLONG_MAX +9223372036854775807 //
263 -1
A signed type that must be capable of representing the value 9223372036854775807
requires 64 bits or more.