C++的基础数据类型:
名称 | 字节长度 | 取值范围 |
---|---|---|
bool | 1 | false,true |
char | 1 | -128~127 |
signed char | 1 | -128~127 |
unsigned char | 1 | 0~255 |
short(signed short) | 2 | -215 ~ 215 - 1 |
unsigned short | 2 | 0~216-1 |
int (signed int) | 4 | -231 ~ 231-1 |
unsigned int | 4 | 0~232-1 |
long (signed long) | 4 | -231 ~ 231-1 |
long long | 8 | -263 ~ 263-1 |
unsigned long | 4 | 0~232-1 |
float | 4 | -3.4* 10-38~ 3.4*1038 |
double | 8 | -1.710-308 ~ 1.710-308 |
C++的主要数据类型,主要分为三类:布尔型,整型(char型从本质上说,也是种整型类型,它是长度为1的整数,通常用来存放字符的ASCII码),浮点型。
而 *_t是typedef定义的表示标志,是结构的一种标注。即我们所看到的 uint8_t、uint16_t、uint32_t都不是新的数据类型,而是通过typedef给类型起得别名。(如C语言中没有bool类型,有的程序员用int表示,有的用short表示,则利用统一的定义来表示bool,是比较好的。typedef char bool
)。
则很明显的看出:uint8_t是用1个字节表示的;uint16_t是用2个字节表示的;uint32_t是用4个字节表示的。 比如:
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
则对应的输出为:
uint16_t %hu
uint32_t %u
uint64_t %llu
注意,uint8_t实际上就是一个char,所以输出 uint8_t类型的变量实际上输出对应的字符,而不是数值,比如:
uint8_t num=67;
cout << num << endl; //输出结果为C