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

其余的都是格式字符串的参数,因为格式字符串只包含一个转换说明符,所以第一个参数被打印出来,其余的被丢弃。

我想你想要例如

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

请注意格式字符串中缺少逗号。

于 2014-07-29T06:51:26.330 回答