在C中的printf中,什么是未引用的`PRIu32`?

时间:2017-08-28 15:46:36

标签: c printf uint32

我正在查看以下代码:

#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中找到哪种形式可以容纳引号之外的变量 - 以及如何将其推广到引号外的其他语句。

1 个答案:

答案 0 :(得分:5)

这是format macro constant

它们用于在不同平台上对值进行可移植格式化,其中基本数字类型的大小可能不同。

问题中的一个是以十进制格式打印无符号32位整数的格式。

这些宏有效,因为C连接连续的常量字符串文字。例如,编译器将三个字符串"\tTotal: %" "u" "\n\n"连接成单个字符串"\tTotal: %u\n\n"