- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - <inttypes.h>
C 库头文件 <inttypes.h> 提供了用于格式化和处理数值数据类型(int)的各种宏。当我们使用 printf() 和 scanf() 函数时,这些宏非常有用。
库宏
在这里,我们将探索一些 inttypes.h 中重要的关键宏 -
输出格式说明符宏 - printf() 函数
- PRIxMAX:这是 intmax_t 的 printf 说明符,等效于 %x(十六进制)。
- PRIiMAX:这是 intmax_t 的 printf 说明符,等效于 %i(整数)。
- PRIuLEAST32:这是 uint_least32_t 的 printf 说明符,等效于 %u(无符号)。
输入格式说明符宏 - scanf() 函数
类似于 printf() 函数,这里有一些用于读取输入的宏 -
- SCNxMAX:这是 intmax_t 的 scanf 说明符,等效于 %x(十六进制)。
- SCNiMAX:这是 intmax_t 的 scanf 说明符,等效于 %i(整数)。
- SCNuLEAST32:这是 uint_least32_t 的 scanf 说明符,等效于 %u(无符号)。
字符串函数宏
以下是支持字符串函数的一些宏列表 -
- strtoimax(str, endptr, base):它等效于 intmax_t 的 strtol()。
- strtoumax(str, endptr, base):它等效于 uintmax_t 的 strtoul()。
- wcstoimax(wcs, endptr, base):它等效于 intmax_t 的 wcstol()。
- wcstoumax(wcs, endptr, base):它等效于 uintmax_t 的 wcstoul()。
示例 1
以下是 C 库头文件 <inttypes.h>,它提供了一个用于打印具有固定宽度的整数值的程序。
#include <stdio.h> #include <inttypes.h> int main() { int32_t num1 = 67543; int64_t num2 = 894432590; printf("Formatted output using inttypes.h:\n"); printf("num1: %" PRId32 "\n", num1); printf("num2: %" PRId64 "\n", num2); return 0; }
输出
执行上述代码后,我们将得到以下结果 -
Formatted output using inttypes.h: num1: 67543 num2: 894432590
示例 2
下面的程序使用 inttypes.h 下的 unintmax_t 计算一个数字的阶乘。
#include <stdio.h> #include <inttypes.h> uintmax_t factorial(uintmax_t n) { if (n == 0) return 1; else return n * factorial(n - 1); } int main() { uintmax_t num = 5; printf("Factorial of %" PRIuMAX " = %" PRIuMAX "\n", num, factorial(num)); return 0; }
输出
执行代码后,我们将得到以下结果 -
Factorial of 5 = 120
示例 3
下面的程序使用 SCNu64 从用户读取一个 64 位无符号整数。然后使用 PRIu64 打印输入的值。
#include <stdio.h> #include <inttypes.h> int main() { uint64_t large_number = 9876543210; printf("The entered number: %" PRIu64 "\n", large_number); return 0; }
输出
上述代码产生以下结果 -
The entered number: 9876543210
广告