【C++标准库】—“stdint“ 头文件
关于整形变量的头文件,提供了类型的整形
1.各种int类型
常见的 int
typedef signed char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t,intmax_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t,uintmax_t;
注:前面的signed char ,short ,int,long long类型是C语言的标准数据类型。后面都是起得别名
typedef signed char int_least8_t;
typedef short int_least16_t;
typedef int int_least32_t;
typedef long long int_least64_t;
typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;
typedef unsigned long long uint_least64_t;
注:字样 int_least n _t 指定具有至少n的宽度的符号整数类型,使得没有具有较小尺寸的符号整数类型至少具有指定的宽度.因此,<强> int_least32_t 表示宽度为至少32位的符号整数类型.
typedef signed char int_fast8_t;
typedef int int_fast16_t;
typedef int int_fast32_t;
typedef long long int_fast64_t;
typedef unsigned char uint_fast8_t;
typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
typedef unsigned long long uint_fast64_t;
注:typedef名称 uint_fast n _t 指定具有宽度至少n的最快无符号整数类型.
实际上上面三组类型都是一样的,都是用typedef起的别名,经常用的还都是第一组。
2.各种类型对相应得MIN和MAX
#define INT8_MIN (-127i8 - 1)
#define INT16_MIN (-32767i16 - 1)
#define INT32_MIN (-2147483647i32 - 1)
#define INT64_MIN (-9223372036854775807i64 - 1)
#define INT8_MAX 127i8
#define INT16_MAX 32767i16
#define INT32_MAX 2147483647i32
#define INT64_MAX 9223372036854775807i64
#define UINT8_MAX 0xffui8
#define UINT16_MAX 0xffffui16
#define UINT32_MAX 0xffffffffui32
#define UINT64_MAX 0xffffffffffffffffui64
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST16_MIN INT16_MIN
#define INT_LEAST32_MIN INT32_MIN
#define INT_LEAST64_MIN INT64_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MAX INT16_MAX
#define INT_LEAST32_MAX INT32_MAX
#define INT_LEAST64_MAX INT64_MAX
#define UINT_LEAST8_MAX UINT8_MAX
#define UINT_LEAST16_MAX UINT16_MAX
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST16_MIN INT32_MIN
#define INT_FAST32_MIN INT32_MIN
#define INT_FAST64_MIN INT64_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MAX INT32_MAX
#define INT_FAST32_MAX INT32_MAX
#define INT_FAST64_MAX INT64_MAX
#define UINT_FAST8_MAX UINT8_MAX
#define UINT_FAST16_MAX UINT32_MAX
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
3.不同位数系统下的int指针范围的最小值和最大值
我们知道,不同系统下int代表的位数并不一样。他们的最大值和最小值就会不一样。
对于32位和64位编译器,int都占32位(4字节)。
但是int 指针在32位下是4个字节,在64位下8个字节。
#ifdef _WIN64
#define INTPTR_MIN INT64_MIN
#define INTPTR_MAX INT64_MAX
#define UINTPTR_MAX UINT64_MAX
#else
#define INTPTR_MIN INT32_MIN
#define INTPTR_MAX INT32_MAX
#define UINTPTR_MAX UINT32_MAX
#endif
- x64系统下
- INTPTR_MIN(int 类型指针)的最小值是 (-9223372036854775807i64 - 1)
- INTPTR_MAX(int 类型指针)的最大值是(9223372036854775807i64)
- UINTPTR_MAX(无符号int类型指针)的最大值是0xffffffffffffffffui64。最小值是0
- 非x64系统下
- INTPTR_MIN(int 类型指针)的最小值是 (-2147483647i32 - 1)
- INTPTR_MAX(int 类型指针)的最大值是2147483647i32
- UINTPTR_MAX(无符号int类型指针)的最大值是 0xffffffffui32。最小值是0