0

これを試すと:

#include <stdio.h>
#include <inttypes.h>

int main (int argc, char **argv)
{
  uint64_t key = 0xf0000000ffffffff;

  printf ("key=%" PRIx64, key, "\t\n  %" PRIx64, "\n", key);
}

それは印刷しkey=f0000000ffffffffます; すべての空白が削除されます。どうすれば印刷できますか? を使用してgcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3います。

4

1 に答える 1

4

あなたが提供するフォーマット文字列printf

"key=%" PRIx64

残りはすべてフォーマット文字列の引数です。フォーマット文字列には変換指定子が 1 つしか含まれていないため、最初の引数が出力され、残りは破棄されます。

私はあなたが欲しいと思う例えば

printf("key=%" PRIx64 "\t\n  %" PRIx64 "\n", key, key);

フォーマット文字列にコンマがないことに注意してください。

于 2014-07-29T06:51:26.330 に答える