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效果相同,但是在不同的编译器上可能有区别,