嗯,你是谁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; } 

它的工作原理! 我不明白为什么? 有人可以帮我吗? 非常感谢! 托

PRIu64是C99中引入的格式说明符,用于打印uint64_t ,其中uint64_t是(从链接的引用页面):

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

PRIu64是一个string(文字),例如以下内容:

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

在我的机器上打印llu 。 相邻的string文字是连接在一起的,从6.4.5节C99标准的string文字

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

意即:

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

(在我的机器上)是一样的:

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

请参阅http://ideone.com/jFvKR9