c++ “uint*_t” 数据类型

1. 基础数据类型

名称                        字节长度                        取值范围
bool                             1                                false
char                             1                                -128 - 127
signed char                 1                                -128 - 127
unsigned char             1                                 0 - 255
short                            2                                - 2^15 - 2^15 -1
unsigned short            2                                  0 - 2^16 -1
(signed) int                  4                                - 2^31 - 2^31 - 1
unsigned int                4                                  0 - 2^32 - 1
(signed) long               4                                 - 2^31 - 2^31 - 1
unsigned long             4                                   0 - 2^32 - 1
long long                     8                                 - 2^63 - 2^63 - 1
float                             4                                  
double                         8

2. uint*_t含义

主要分为三类,布尔型、整型、浮点型
*_t:表示使用typedef定义的,是结构的一种标注,即uint8_t,uint16_t,uint32_t都不是新的数据类型,是通过typedef起的别名;
---------------------------------------------------------------
uint8_t:是一个char,
uint8_t转化为字符串、字符串转化为uint8_t类型变量都要注意,uint8_t转化为字符串得到对应的ASCII码对应的字符
---------------------------------------------------------------
uint8_t:1字节              typedef unsigned char      uint8_t
uint16_t:2字节            typedef unsigned short     uint16_t
uint32_t:4字节            typedef unsigned int         uint32_t
uint64_t:8字节            typedef unsigned long      uint64_t
1个字节8位,8字节64位
----------------------------------------------------------------

3. 32、64位系统

32位系统中,int、long都占4个字节
64位系统中,int占4个字节、long占8个字节

4. 为何使用uint*_t 

① 可以实现跨平台的可移植性

② uint64_t,占用8个字节,可以存储的整数范围是(19位数,与时间戳相同)

     -9223372036854775808 到 9223372036854775807;

③  uint64_t等可以保证在不同的平台上有相同的位数和取值范围,

      在某些系统中,与long long int效果相同,但是在不同的编译器上可能有区别,

你可能感兴趣的:(C++,c++)