<stdint.h>
是 C 标准库中的一个重要头文件,它定义了精确大小的整数类型,提供了与平台无关的整数类型。这些类型可以确保程序的可移植性,特别是在不同平台和编译器之间,保证了整数类型的大小和符号。
📖 目录
1️⃣ <stdint.h>
简介
<stdint.h>
头文件是 C99 标准中新增的,它主要通过定义一组精确定义大小和符号的整数类型来替代传统的 int
类型。这些类型包括整数的精确宽度,如 int32_t
和 uint64_t
,以及其它一些用于便捷类型转换和保证平台一致性的常量宏。
<stdint.h>
提供了带符号和无符号的固定宽度整数类型,确保了程序员可以在不同平台上写出更加健壮的程序。
2️⃣ 整数类型
📌 带符号整数类型
int8_t
: 8 位带符号整数,范围为 -128 到 127。int16_t
: 16 位带符号整数,范围为 -32,768 到 32,767。int32_t
: 32 位带符号整数,范围为 -2,147,483,648 到 2,147,483,647。int64_t
: 64 位带符号整数,范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
📌 无符号整数类型
uint8_t
: 8 位无符号整数,范围为 0 到 255。uint16_t
: 16 位无符号整数,范围为 0 到 65,535。uint32_t
: 32 位无符号整数,范围为 0 到 4,294,967,295。uint64_t
: 64 位无符号整数,范围为 0 到 18,446,744,073,709,551,615。
📌 最小整数类型
int_least8_t
: 至少为 8 位的带符号整数类型。int_least16_t
: 至少为 16 位的带符号整数类型。int_least32_t
: 至少为 32 位的带符号整数类型。int_least64_t
: 至少为 64 位的带符号整数类型。
📌 最大整数类型
int_fast8_t
: 至少为 8 位的带符号整数类型,优先考虑快速访问。int_fast16_t
: 至少为 16 位的带符号整数类型,优先考虑快速访问。int_fast32_t
: 至少为 32 位的带符号整数类型,优先考虑快速访问。int_fast64_t
: 至少为 64 位的带符号整数类型,优先考虑快速访问。
📌 指针大小整数类型
intptr_t
: 用于存储指针的带符号整数类型。uintptr_t
: 用于存储指针的无符号整数类型。
3️⃣ 整数常量宏
<stdint.h>
提供了用于处理整数常量的宏,确保整数常量在不同平台间的一致性:
📌 宏定义
INT8_MAX
,INT8_MIN
: 8 位带符号整数的最大值和最小值。INT16_MAX
,INT16_MIN
: 16 位带符号整数的最大值和最小值。INT32_MAX
,INT32_MIN
: 32 位带符号整数的最大值和最小值。INT64_MAX
,INT64_MIN
: 64 位带符号整数的最大值和最小值。UINT8_MAX
,UINT16_MAX
,UINT32_MAX
,UINT64_MAX
: 无符号整数类型的最大值。
📌 示例:常量宏使用
#include <stdio.h>
#include <stdint.h>
int main() {
// 打印类型的最大值
printf("INT32_MAX: %d\n", INT32_MAX);
printf("UINT32_MAX: %u\n", UINT32_MAX);
return 0;
}
输出:
INT32_MAX: 2147483647
UINT32_MAX: 4294967295
4️⃣ 使用实例
📌 示例:固定宽度整数的使用
#include <stdio.h>
#include <stdint.h>
int main() {
int32_t a = 2147483647; // 使用 32 位带符号整数
uint64_t b = 18446744073709551615U; // 使用 64 位无符号整数
printf("a: %d\n", a);
printf("b: %llu\n", b);
return 0;
}
输出:
a: 2147483647
b: 18446744073709551615
📌 示例:指针大小整数类型
#include <stdio.h>
#include <stdint.h>
int main() {
intptr_t ptr_val = (intptr_t) NULL; // 用 intptr_t 存储指针
printf("Pointer value: %ld\n", ptr_val);
return 0;
}
输出:
Pointer value: 0
5️⃣ 参考资料
📖 C 标准库 – <stdint.h>
官方文档
📖 GNU C Library – stdint.h
📖 ISO C 标准(PDF)
📌 总结
<stdint.h>
是 C99 标准引入的一个头文件,提供了固定宽度的整数类型和常量,确保整数类型在不同平台上的一致性。它对于需要跨平台开发的应用程序尤其重要,能够确保数据类型的大小和符号不会因为平台差异而出现问题。
发表回复