国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > stdint.h 以获得更好的体验。

# C 语言标准库头文件 stdint.h

请查看 C 语言标准库头文件列表 了解更多相关 API。

这个头文件提供 固定长度的整数类型

# 示例

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

int main(void) {
    // 8位有符号和无符号整数
    int8_t small_int = -128;
    uint8_t small_uint = 255;
    
    // 16位有符号和无符号整数
    int16_t medium_int = -32768;
    uint16_t medium_uint = 65535;
    
    // 32位有符号和无符号整数
    int32_t large_int = -2147483648;
    uint32_t large_uint = 4294967295;
    
    // 64位有符号和无符号整数
    int64_t huge_int = -9223372036854775807LL;
    uint64_t huge_uint = 18446744073709551615ULL;
    
    // 最快的最小宽度类型
    int_fast8_t fast_small = 127;
    uint_fast16_t fast_medium = 65535;
    
    // 最小宽度类型
    int_least8_t least_small = -128;
    uint_least16_t least_medium = 65535;
    
    // 最大宽度整数类型
    intmax_t max_int = INTMAX_MAX;
    uintmax_t max_uint = UINTMAX_MAX;
    
    // 打印各种类型的值
    printf("8-bit signed: %" PRIi8 ", unsigned: %" PRIu8 "\n", small_int, small_uint);
    printf("16-bit signed: %" PRIi16 ", unsigned: %" PRIu16 "\n", medium_int, medium_uint);
    printf("32-bit signed: %" PRIi32 ", unsigned: %" PRIu32 "\n", large_int, large_uint);
    printf("64-bit signed: %" PRIi64 ", unsigned: %" PRIu64 "\n", huge_int, huge_uint);
    printf("Fast types signed: %" PRIiFAST8 ", unsigned: %" PRIuFAST16 "\n", fast_small, fast_medium);
    printf("Least types signed: %" PRIiLEAST8 ", unsigned: %" PRIuLEAST16 "\n", least_small, least_medium);
    printf("Max int: %" PRId64 ", max uint: %" PRIu64 "\n", max_int, max_uint);
    
    // 打印一些类型的尺寸
    printf("Size of int8_t: %zu bytes\n", sizeof(int8_t));
    printf("Size of int16_t: %zu bytes\n", sizeof(int16_t));
    printf("Size of int32_t: %zu bytes\n", sizeof(int32_t));
    printf("Size of int64_t: %zu bytes\n", sizeof(int64_t));
    
    return 0;
}

运行结果:

8-bit signed: -128, unsigned: 255
16-bit signed: -32768, unsigned: 65535
32-bit signed: -2147483648, unsigned: 4294967295
64-bit signed: -9223372036854775807, unsigned: 18446744073709551615
Fast types signed: 127, unsigned: 65535
Least types signed: -128, unsigned: 65535
Max int: 9223372036854775807, max uint: 18446744073709551615
Size of int8_t: 1 bytes
Size of int16_t: 2 bytes
Size of int32_t: 4 bytes
Size of int64_t: 8 bytes

# 类型

类型 标准 说明
int8_t C99 8 位有符号整数
int16_t C99 16 位有符号整数
int32_t C99 32 位有符号整数
int64_t C99 64 位有符号整数
intptr_t C99 位数和指针一样的有符号整数
intmax_t C99 位数最多的有符号整数
uint8_t C99 8 位无符号整数
uint16_t C99 16 位无符号整数
uint32_t C99 32 位无符号整数
uint64_t C99 64 位无符号整数
uintptr_t C99 位数和指针一样的无符号整数
uintmax_t C99 位数最多的无符号整数
int_fast8_t C99 不少于 8 位的性能最快的有符号整数
int_fast16_t C99 不少于 16 位的性能最快的有符号整数
int_fast32_t C99 不少于 32 位的性能最快的有符号整数
int_fast64_t C99 不少于 64 位的性能最快的有符号整数
int_least8_t C99 不少于 8 位的位数最少的有符号整数
int_least16_t C99 不少于 16 位的位数最少的有符号整数
int_least32_t C99 不少于 32 位的位数最少的有符号整数
int_least64_t C99 不少于 64 位的位数最少的有符号整数
uint_fast8_t C99 不少于 8 位的性能最快的无符号整数
uint_fast16_t C99 不少于 16 位的性能最快的无符号整数
uint_fast32_t C99 不少于 32 位的性能最快的无符号整数
uint_fast64_t C99 不少于 64 位的性能最快的无符号整数
uint_least8_t C99 不少于 8 位的位数最少的无符号整数
uint_least16_t C99 不少于 16 位的位数最少的无符号整数
uint_least32_t C99 不少于 32 位的位数最少的无符号整数
uint_least64_t C99 不少于 64 位的位数最少的无符号整数

#

标准 说明
INT8_C C99 将值扩展为 int_least8_t 类型的整型常量表达式(字面量)
INT16_C C99 将值扩展为 int_least16_t 类型的整型常量表达式(字面量)
INT32_C C99 将值扩展为 int_least32_t 类型的整型常量表达式(字面量),例如 INT32C(233) 可能扩展为 233L
INT64_C C99 将值扩展为 int_least64_t 类型的整型常量表达式(字面量),例如 INT64C(233) 可能扩展为 233LL
INTMAX_C C99 将值扩展为 intmax_t 类型的整型常量表达式(字面量)
UINT8_C C99 将值扩展为 uint_least8_t 类型的整型常量表达式(字面量)
UINT16_C C99 将值扩展为 uint_least16_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233U
UINT32_C C99 将值扩展为 uint_least32_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233UL
UINT64_C C99 将值扩展为 uint_least64_t 类型的整型常量表达式(字面量),例如 UINT64C(233) 可能扩展为 233ULL
UINTMAX_C C99 将值扩展为 uintmax_t 类型的整型常量表达式(字面量)

# 常量

类型范围 标准 说明
INT8_MIN C99 int8_t 的最小值
INT16_MIN C99 int16_t 的最小值
INT32_MIN C99 int32_t 的最小值
INT64_MIN C99 int64_t 的最小值
INTPTR_MIN C99 intptr_t 的最小值
INTMAX_MIN C99 intmax_t 的最小值
INT_FAST8_MIN C99 int_fast8_t 的最小值
INT_FAST16_MIN C99 int_fast16_t 的最小值
INT_FAST32_MIN C99 int_fast32_t 的最小值
INT_FAST64_MIN C99 int_fast64_t 的最小值
INT_LEAST8_MIN C99 int_least8_t 的最小值
INT_LEAST16_MIN C99 int_least16_t 的最小值
INT_LEAST32_MIN C99 int_least32_t 的最小值
INT_LEAST64_MIN C99 int_least64_t 的最小值
INT8_MAX C99 int8_t 的最大值
INT16_MAX C99 int16_t 的最大值
INT32_MAX C99 int32_t 的最大值
INT64_MAX C99 int64_t 的最大值
INTPTR_MAX C99 intptr_t 的最大值
INTMAX_MAX C99 intmax_t 的最大值
INT_FAST8_MAX C99 int_fast8_t 的最大值
INT_FAST16_MAX C99 int_fast16_t 的最大值
INT_FAST32_MAX C99 int_fast32_t 的最大值
INT_FAST64_MAX C99 int_fast64_t 的最大值
INT_LEAST8_MAX C99 int_least8_t 的最大值
INT_LEAST16_MAX C99 int_least16_t 的最大值
INT_LEAST32_MAX C99 int_least32_t 的最大值
INT_LEAST64_MAX C99 int_least64_t 的最大值
UINT8_MAX C99 uint8_t 的最大值
UINT16_MAX C99 uint16_t 的最大值
UINT32_MAX C99 uint32_t 的最大值
UINT64_MAX C99 uint64_t 的最大值
UINTPTR_MAX C99 uintptr_t 的最大值
UINTMAX_MAX C99 uintmax_t 的最大值
UINT_FAST8_MAX C99 uint_fast8_t 的最大值
UINT_FAST16_MAX C99 uint_fast16_t 的最大值
UINT_FAST32_MAX C99 uint_fast32_t 的最大值
UINT_FAST64_MAX C99 uint_fast64_t 的最大值
UINT_LEAST8_MAX C99 uint_least8_t 的最大值
UINT_LEAST16_MAX C99 uint_least16_t 的最大值
UINT_LEAST32_MAX C99 uint_least32_t 的最大值
UINT_LEAST64_MAX C99 uint_least64_t 的最大值
类型宽度 标准 说明
INT8_WIDTH C23 int8_t 的位宽度
INT16_WIDTH C23 int16_t 的位宽度
INT32_WIDTH C23 int32_t 的位宽度
INT64_WIDTH C23 int64_t 的位宽度
INTPTR_WIDTH C23 intptr_t 的位宽度
INTMAX_WIDTH C23 intmax_t 的位宽度
UINT8_WIDTH C23 uint8_t 的位宽度
UINT16_WIDTH C23 uint16_t 的位宽度
UINT32_WIDTH C23 uint32_t 的位宽度
UINT64_WIDTH C23 uint64_t 的位宽度
UINTPTR_WIDTH C23 uintptr_t 的位宽度
UINTMAX_WIDTH C23 uintmax_t 的位宽度
INT_FAST8_WIDTH C23 int_fast8_t 的位宽度
INT_FAST16_WIDTH C23 int_fast16_t 的位宽度
INT_FAST32_WIDTH C23 int_fast32_t 的位宽度
INT_FAST64_WIDTH C23 int_fast64_t 的位宽度
INT_LEAST8_WIDTH C23 int_least8_t 的位宽度
INT_LEAST16_WIDTH C23 int_least16_t 的位宽度
INT_LEAST32_WIDTH C23 int_least32_t 的位宽度
INT_LEAST64_WIDTH C23 int_least64_t 的位宽度
UINT_FAST8_WIDTH C23 uint_fast8_t 的位宽度
UINT_FAST16_WIDTH C23 uint_fast16_t 的位宽度
UINT_FAST32_WIDTH C23 uint_fast32_t 的位宽度
UINT_FAST64_WIDTH C23 uint_fast64_t 的位宽度
UINT_LEAST8_WIDTH C23 uint_least8_t 的位宽度
UINT_LEAST16_WIDTH C23 uint_least16_t 的位宽度
UINT_LEAST32_WIDTH C23 uint_least32_t 的位宽度
UINT_LEAST64_WIDTH C23 uint_least64_t 的位宽度

# 推荐阅读

本文 更新于: 2025-11-27 09:38:07 创建于: 2025-11-27 09:38:07