当前位置: C语言 -- 标准库 -- <inttypes.h> -- PRI开头的宏

PRI开头的宏


概要:

PRIdMAX为例。

#define PRIdMAX character_string_literal


描述:

以下对象式宏会扩展为包含转换说明符的字符串字面量,其中转换说明符可能使用长度修饰符修饰;这些对象式宏适合在转换对应的整数类型时在格式化输出函数的格式参数中使用;这些对象式宏的通用格式为:PRI + 转换说明符 +ISO/IEC 9899:2018标准第7.20.1 Integer types节中类型名对应的名称;在这些对象式宏中,N表示ISO/IEC 9899:2018标准第7.20.1 Integer types节中描述的整数类型的宽度;例如:宏PRIdFAST32可用于格式化输出int_fast32_t类型整数。


PRI开头的宏具体如下:

1、用于有符号整数的宏

PRIdN PRIdLEASTN PRIdFASTN PRIdMAX PRIdPTR
PRIiN PRIiLEASTN PRIiFASTN PRIiMAX PRIiPTR

2、用于无符号整数的宏

PRIoN PRIoLEASTN PRIoFASTN PRIoMAX PRIoPTR
PRIuN PRIuLEASTN PRIuFASTN PRIuMAX PRIuPTR
PRIxN PRIxLEASTN PRIxFASTN PRIxMAX PRIxPTR
PRIXN PRIXLEASTN PRIXFASTN PRIXMAX PRIXPTR

PRI开头的宏可用于fprintf系列函数和fwprintf系列函数的格式化输出。


上述宏与ISO/IEC 9899:2018标准第7.20.1 Integer types节中整数类型的对应关系如下表所示:

对应整数类型
PRIdN intN_t
PRIdLEASTN int_leastN_t
PRIdFASTN int_fastN_t
PRIdMAX intmax_t
PRIdPTR intptr_t

范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
/*PRI开头的宏范例*/

#include <inttypes.h>
#include <stdio.h>

int main(void)
{
    int32_t a = 5;
    printf("a = %"PRId32"\n", a);

    int_least32_t b = 10;
    printf("b = %"PRIdLEAST32"\n", b);

    int_fast32_t c = 15;
    printf("c = %"PRIdFAST32"\n", c);

    intmax_t d = 20;
    printf("d = %"PRIdMAX"\n", d);

    intptr_t e = 25;
    printf("e = %"PRIdPTR"\n", e);

    return 0;
}


输出:

a = 5

b = 10

c = 15

d = 20

e = 25

GCC编译器<inttypes.h>头文件中上述宏定义如下:

#define PRId32 "d"

#define PRIdLEAST32 "d"

#define PRIdFAST32 "d"

#define PRIdMAX "I64d"

#define PRIdPTR "d"


相关内容:
SCN开头的宏 用于格式化输入函数的宏。