Printf uint64_t を試行するとフォーマット エラーに誤った末尾 '%' が表示される
printf を使用して uint64_t 変数を出力しようとすると、次のようになります。 「形式に偽の末尾 '%'」などのエラーが発生します。問題を詳しく調べて解決策を探ってみましょう。
提供されたコード スニペットは、%" PRIu64 " プレースホルダーを使用して uint64_t 変数を出力する試みを示しています:
#include <inttypes.h> #include <stdio.h> int main() { uint64_t ui64 = 90; printf("test uint64_t : %" PRIu64 "\n", ui64); return 0; }
ただし、コンパイルは失敗します。前述のエラーメッセージが表示されます。この問題を解決するには、必要なマクロが定義されていることを確認する必要があります。 ISO C99 標準では、PRIu64 マクロは明示的に要求された場合にのみ定義されると指定されています。
そのため、
#define __STDC_FORMAT_MACROS
Withこの行を追加すると、PRIu64 マクロが適切に定義され、発生したエラーは解決されます。このマクロにより、printf 形式文字列で PRIu64 プレースホルダーの使用が有効になり、uint64_t 変数を正常に出力できるようになります。
以上が「uint64_t」を出力すると「形式に偽の末尾 '%'」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。