long long is not the same as
long (although they can have the same size, e.g. in most 64-bit POSIX system). It is just guaranteed that a
long long is at least as long as a
long. In most platforms, a
long long represents a 64-bit signed integer type.
You could use
long long to store the 8-byte value safely in most conventional platforms, but it's better to use
<cstdint> to clarify that you want an integer type having ≥64-bit.