我正在查看以下代码:
#include <stdio.h>
#include <inttypes.h>
int main()
{
uint32_t total = 0;
printf("\tTotal: %"PRIu32"\n\n", total);
return total;
}
PRIu32
如何符合printf
语法?我的意思是,我可以猜测,Iu32
可能意味着&#34;整数无符号32位&#34;。但是,我不确定在man 3 printf
中找到哪种形式可以容纳引号之外的变量 - 以及如何将其推广到引号外的其他语句。
答案 0 :(得分:5)
它们用于在不同平台上对值进行可移植格式化,其中基本数字类型的大小可能不同。
问题中的一个是以十进制格式打印无符号32位整数的格式。
这些宏有效,因为C连接连续的常量字符串文字。例如,编译器将三个字符串"\tTotal: %" "u" "\n\n"
连接成单个字符串"\tTotal: %u\n\n"
。