【C++标准库】—“stdint“ 头文件

【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

猜你喜欢

转载自blog.csdn.net/m0_57168310/article/details/127966898