<inttypes.h> 文件还包括指定 printf(3S) 和 scanf(3S) 格式说明符的宏。实质上,如果宏名称内置了参数的位数,这些宏将在格式说明符前面添加 l 或 ll,以便将参数标识为 long 或 long long。
printf(3S) 的宏以十进制、八进制、无符号和十六进制格式输出最短和最长整型,如以下示例所示:
int64_t i; printf("i =%" PRIx64 "\n", i); |
同样,scanf(3S) 的宏以十进制、八进制、无符号和十六进制格式读取最短和最长整型。
uint64_t u; scanf("%" SCNu64 "\n", &u); |
不要不加区别地使用这些宏。最好将它们与定宽整型中介绍的定宽类型一起使用。