ULONGLONG
値(unsigned __int64
)。 printf
で使用する形式は何ですか? %llu
別の質問ですが、彼らはそれがLinux専用だと言っています。
ご協力いただきありがとうございます。
Googleを使用して「Visual Studio printf unsigned __int64」を検索すると、最初の結果として このページ が生成され、接頭辞I64
ので、フォーマット指定子は%I64u
。
%llu
はunsigned long long
を印刷するための標準的な方法です。Linuxだけでなく、実際にはC99にあります。したがって、実際の問題は、Visual Studioではなく、C99互換のコンパイラを使用することです。
C99 7.19.6 フォーマットされた入出力関数
ll(ell-ell)次のd、i、o、u、x、またはX変換指定子がlong long intまたはunsigned long long int引数に適用されることを指定します。または、後続のn変換指定子がlong long int引数へのポインターに適用されること。
PRIu64
標準Cライブラリから指定された形式。これは、さまざまなアーキテクチャにわたる符号なし64ビット整数の形式指定子をユーザーに提供するために設計されました。
次に例を示します(C++ではなくCで)。
#include <stdint.h> /* For uint64_t */
#include <inttypes.h> /* For PRIu64 */
#include <stdio.h> /* For printf */
#include <stdlib.h> /* For exit status */
int main()
{
uint64_t n = 1986;
printf("And the winning number is.... %" PRIu64 "!\n", n);
return EXIT_SUCCESS;
}
Printfには、コンパイラに応じてunsigned long long
の異なる書式指定子があります。%llu
と%Lu
を見てきました。一般的には、代わりにstd::cout
などを使用することをお勧めします。
HEX出力の回避策は次のとおりです。
printf("%08X%08X", static_cast<UINT32>((u64>>32)&0xFFFFFFFF), static_cast<UINT32>(u64)&0xFFFFFFFF));