ホームページ >バックエンド開発 >C++ >「uint64_t」を出力すると「形式に偽の末尾 '%'」エラーが発生するのはなぜですか?

「uint64_t」を出力すると「形式に偽の末尾 '%'」エラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-17 21:21:02922ブラウズ

Why Does Printing a `uint64_t` Result in a

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。