约 18153 字

约 91 分钟

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

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

#示例

#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_tC998 位有符号整数
int16_tC9916 位有符号整数
int32_tC9932 位有符号整数
int64_tC9964 位有符号整数
intptr_tC99位数和指针一样的有符号整数
intmax_tC99位数最多的有符号整数
uint8_tC998 位无符号整数
uint16_tC9916 位无符号整数
uint32_tC9932 位无符号整数
uint64_tC9964 位无符号整数
uintptr_tC99位数和指针一样的无符号整数
uintmax_tC99位数最多的无符号整数
int_fast8_tC99不少于 8 位的性能最快的有符号整数
int_fast16_tC99不少于 16 位的性能最快的有符号整数
int_fast32_tC99不少于 32 位的性能最快的有符号整数
int_fast64_tC99不少于 64 位的性能最快的有符号整数
int_least8_tC99不少于 8 位的位数最少的有符号整数
int_least16_tC99不少于 16 位的位数最少的有符号整数
int_least32_tC99不少于 32 位的位数最少的有符号整数
int_least64_tC99不少于 64 位的位数最少的有符号整数
uint_fast8_tC99不少于 8 位的性能最快的无符号整数
uint_fast16_tC99不少于 16 位的性能最快的无符号整数
uint_fast32_tC99不少于 32 位的性能最快的无符号整数
uint_fast64_tC99不少于 64 位的性能最快的无符号整数
uint_least8_tC99不少于 8 位的位数最少的无符号整数
uint_least16_tC99不少于 16 位的位数最少的无符号整数
uint_least32_tC99不少于 32 位的位数最少的无符号整数
uint_least64_tC99不少于 64 位的位数最少的无符号整数

#宏

宏标准说明
INT8_CC99将值扩展为 int_least8_t 类型的整型常量表达式(字面量)
INT16_CC99将值扩展为 int_least16_t 类型的整型常量表达式(字面量)
INT32_CC99将值扩展为 int_least32_t 类型的整型常量表达式(字面量),例如 INT32C(233) 可能扩展为 233L
INT64_CC99将值扩展为 int_least64_t 类型的整型常量表达式(字面量),例如 INT64C(233) 可能扩展为 233LL
INTMAX_CC99将值扩展为 intmax_t 类型的整型常量表达式(字面量)
UINT8_CC99将值扩展为 uint_least8_t 类型的整型常量表达式(字面量)
UINT16_CC99将值扩展为 uint_least16_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233U
UINT32_CC99将值扩展为 uint_least32_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233UL
UINT64_CC99将值扩展为 uint_least64_t 类型的整型常量表达式(字面量),例如 UINT64C(233) 可能扩展为 233ULL
UINTMAX_CC99将值扩展为 uintmax_t 类型的整型常量表达式(字面量)

#常量

类型范围标准说明
INT8_MINC99int8_t 的最小值
INT16_MINC99int16_t 的最小值
INT32_MINC99int32_t 的最小值
INT64_MINC99int64_t 的最小值
INTPTR_MINC99intptr_t 的最小值
INTMAX_MINC99intmax_t 的最小值
INT_FAST8_MINC99int_fast8_t 的最小值
INT_FAST16_MINC99int_fast16_t 的最小值
INT_FAST32_MINC99int_fast32_t 的最小值
INT_FAST64_MINC99int_fast64_t 的最小值
INT_LEAST8_MINC99int_least8_t 的最小值
INT_LEAST16_MINC99int_least16_t 的最小值
INT_LEAST32_MINC99int_least32_t 的最小值
INT_LEAST64_MINC99int_least64_t 的最小值
INT8_MAXC99int8_t 的最大值
INT16_MAXC99int16_t 的最大值
INT32_MAXC99int32_t 的最大值
INT64_MAXC99int64_t 的最大值
INTPTR_MAXC99intptr_t 的最大值
INTMAX_MAXC99intmax_t 的最大值
INT_FAST8_MAXC99int_fast8_t 的最大值
INT_FAST16_MAXC99int_fast16_t 的最大值
INT_FAST32_MAXC99int_fast32_t 的最大值
INT_FAST64_MAXC99int_fast64_t 的最大值
INT_LEAST8_MAXC99int_least8_t 的最大值
INT_LEAST16_MAXC99int_least16_t 的最大值
INT_LEAST32_MAXC99int_least32_t 的最大值
INT_LEAST64_MAXC99int_least64_t 的最大值
UINT8_MAXC99uint8_t 的最大值
UINT16_MAXC99uint16_t 的最大值
UINT32_MAXC99uint32_t 的最大值
UINT64_MAXC99uint64_t 的最大值
UINTPTR_MAXC99uintptr_t 的最大值
UINTMAX_MAXC99uintmax_t 的最大值
UINT_FAST8_MAXC99uint_fast8_t 的最大值
UINT_FAST16_MAXC99uint_fast16_t 的最大值
UINT_FAST32_MAXC99uint_fast32_t 的最大值
UINT_FAST64_MAXC99uint_fast64_t 的最大值
UINT_LEAST8_MAXC99uint_least8_t 的最大值
UINT_LEAST16_MAXC99uint_least16_t 的最大值
UINT_LEAST32_MAXC99uint_least32_t 的最大值
UINT_LEAST64_MAXC99uint_least64_t 的最大值
类型宽度标准说明
INT8_WIDTHC23int8_t 的位宽度
INT16_WIDTHC23int16_t 的位宽度
INT32_WIDTHC23int32_t 的位宽度
INT64_WIDTHC23int64_t 的位宽度
INTPTR_WIDTHC23intptr_t 的位宽度
INTMAX_WIDTHC23intmax_t 的位宽度
UINT8_WIDTHC23uint8_t 的位宽度
UINT16_WIDTHC23uint16_t 的位宽度
UINT32_WIDTHC23uint32_t 的位宽度
UINT64_WIDTHC23uint64_t 的位宽度
UINTPTR_WIDTHC23uintptr_t 的位宽度
UINTMAX_WIDTHC23uintmax_t 的位宽度
INT_FAST8_WIDTHC23int_fast8_t 的位宽度
INT_FAST16_WIDTHC23int_fast16_t 的位宽度
INT_FAST32_WIDTHC23int_fast32_t 的位宽度
INT_FAST64_WIDTHC23int_fast64_t 的位宽度
INT_LEAST8_WIDTHC23int_least8_t 的位宽度
INT_LEAST16_WIDTHC23int_least16_t 的位宽度
INT_LEAST32_WIDTHC23int_least32_t 的位宽度
INT_LEAST64_WIDTHC23int_least64_t 的位宽度
UINT_FAST8_WIDTHC23uint_fast8_t 的位宽度
UINT_FAST16_WIDTHC23uint_fast16_t 的位宽度
UINT_FAST32_WIDTHC23uint_fast32_t 的位宽度
UINT_FAST64_WIDTHC23uint_fast64_t 的位宽度
UINT_LEAST8_WIDTHC23uint_least8_t 的位宽度
UINT_LEAST16_WIDTHC23uint_least16_t 的位宽度
UINT_LEAST32_WIDTHC23uint_least32_t 的位宽度
UINT_LEAST64_WIDTHC23uint_least64_t 的位宽度

#推荐阅读

更新: 2026/1/19

作者: PlanC

创建: 2025/6/16