Что такое спецификатор формата для печати значения типа std::uint64_t
(из <cstdint>
) с использованием функций из семейства std::printf()
в C ++?
C99 имеет PRIu64
(из <inttypes.h>
), но мне не совсем ясно, что PRIu64
является допустимым C ++ 11, хотя я мог найти подсказки, что это может быть.
Без PRIu64
, и, насколько я могу судить, не существует единого спецификатора формата, который бы работал во всех случаях:
- На 32-битных платформах
std::uint64_t
будет определен как unsigned long long
, а спецификатор формата будет %llu
.
- На 64-битных платформах
std::uint64_t
будет определено как unsigned long
, а спецификатор формата будет %lu
.
- Однако в Visual Studio
%llu
работает в обоих случаях.