c - C 中 printf 中未加引号的 `PRIu32` 是什么?

标签 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 可能表示“无符号整数 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/

相关文章:

c - 仅在 C 中使用指针打印字符串数组

C 从 uint32_t* 转换为 void *

ios - 如何将 UInt32 设置为其最大值

c# - 在 UInt32 中计算设置位的最快方法是什么

c - 在 C 中为 const char * 分配一个定义常量

c - char * argv[] 是什么意思?

c++ - sprintf 生成的字符串的值顺序与 Ubuntu 服务器上传递的参数顺序不同

c - 从另一个线程使用 va_list

java - 如何使用 Java 或 Groovy printf 向字符串添加千位分隔符

快速 UInt32 0 还是 0x0?