How to input int64_t / uint64_t constants?
The syntax you are looking for is:
const uint64_t test = 1ULL << 30;
The post-fix ULL
is used for unsigned integer literals that are at least 64-bits wide.
You can use the macro:
UINT64_C
to define a 64bit unsigned integer literal, the cstdint
header provides macros for defining integer literals of specific sizes, we see that in section 18.4.1
Header synopsis:
The header also defines numerous macros of the form:
and includes:
plus function macros of the form:
[U]INT{8 16 32 64 MAX}_C
We have to go back to the C99 draft standard to find how they work, section 7.18.4.1
Macros for minimum-width integer constants which says:
[...]if uint_least64_t is a name for the type unsigned long long int, then UINT64_C(0x123) might expand to the integer constant 0x123ULL.
as the proper way of defining a 64bit integer constant expression. This is unfortunately not document on cpprefernce but cplusplus.com does document this feature for of the cstdint
header as well as the posix reference for stdint.h.