什么是 C 中的 PRIu64?

我是 C 的新手,我面对的是:

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


int main(void)
{
uint64_t foo = 10;
printf("foo is equal to %" PRIu64 "!\n", foo);
    

return 0;
}

而且还成功了,我不明白为什么,有人能帮帮我吗?

62182 次浏览

PRIu64 是 C99中引入的一个格式说明符,用于打印 uint64_t,其中 uint64_t(来自链接的参考页面) :

无符号整数类型,宽度分别为... 64位 (仅当实现直接支持该类型时提供)

PRIu64是一个字符串(文字) ,例如:

printf("%s\n", PRIu64);

在我的机器上打印 llu。相邻的字符串字面值连接起来,来自 C99标准的 6.4.5字符串字面值部分:

在翻译阶段6,由任何相邻字符序列和宽字符串文字标记指定的多字节字符序列连接成单个多字节字符序列。如果任何标记是宽字符串文字标记,则生成的多字节字符序列将被视为宽字符串文字; 否则,将被视为字符串文字。

这意味着:

printf("foo is equal to %" PRIu64 "!\n", foo);

(在我的机器上)与:

printf("foo is equal to %llu!\n", foo);

参见 http://ideone.com/jFvKR9