我正在查看以下代码:
#include <stdio.h>
#include <inttypes.h>
int main()
{
uint32_t total = 0;
printf("\tTotal: %"PRIu32"\n\n", total);
return total;
}
PRIu32
如何适应 printf
语法?我的意思是,我大概可以猜到,Iu32
可能表示“无符号整数 32 位”。但是,我不确定 man 3 printf
中的哪种形式可以容纳引号外的变量——以及这如何推广到引号外的其他语句。
最佳答案
这是一个format macro constant .
它们用于在不同平台上对值进行可移植格式化,其中原始数字类型的大小可能不同。
问题中的一个是以十进制格式打印无符号 32 位整数的格式。
这些宏之所以有效,是因为 C 连接了连续的常量字符串文字。例如,三个字符串 "\tTotal: %""u""\n\n"
将连接成单个字符串 "\tTotal: %u\n\n"
由编译器执行。
关于c - C 中 printf 中未加引号的 `PRIu32` 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922817/