What is the format specifier to print a value of type std::uint64_t (from <cstdint>) using functions from the std::printf() family in C++?
C99 has PRIu64 (from <inttypes.h>) but it's not entirely clear to me that PRIu64 is valid C++11, although I could find hints that it may be.
Without PRIu64, and as far as I can tell, there's no single format specifier that will work in all cases:
std::uint64_t is going to be defined as unsigned long long and the format specifier will be %llu.std::uint64_t is going to be defined as unsigned long and the format specifier will be %lu.%llu works in both cases.PRIu64 is still what you will use in C++.  Per [cinttypes.syn] PRIu64
[...]
#define PRIuN see below[...]
The contents and meaning of the header
<cinttypes>are the same as the C standard library header<inttypes.h>[...]
So it exists and has the same behavior that it does in the C ISO/IEC 9899:2011 standard.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With