为什么会产生int8_t、uint8_t等这类数据类型 为什么会产生int8_t、uint8_t等这类数据类型 为什么会产生int8_t、uint8_t等这类数据类型 为什么会产生int8_t、uint8_t等这类数据类型
根本原因在于,C 语言标准只是规定了各个基本类型的最小字节长度,但并没有指定它们的确切字节长度:
char 类型: char 类型的最小大小为 1 字节,用来存储字符的基本类型。
short 类型: short 类型的最小大小为 2 字节,用来存储短整数的基本类型。
int 类型: int 类型的最小大小为 2 字节,用来存储整数的基本类型。
long 类型: long 类型的最小大小为 4 字节,用来存储长整数的基本类型。
long long 类型: long long 类型的最小大小为 8 字节,用来存储超长整数的基本类型。
比如:
在64位Windows上运行C语言的sizeof(long)得到的是4
在64位Linux上运行C语言的sizeof(long)得到的是8
虽然不一样,但它们都不会小于4字节
————————————————
再比如:
在某些平台上运行C语言的sizeof(int)得到的是2
在64位和32位Windows上运行C语言的sizeof(int)得到的是4
虽然不一样,但它们都不会小于2字节
总而言之,C语言现有的基本数据类型,不能满足跨平台的需求。
因为C语言现有的基本数据类型在不同的平台有不同的字节长度,当换一个平台时可能会在数据大小方面出现问题。
也就是说,无论在什么平台,无论用什么编译器,只要是遵守C语言标准的,
int8_t和uint8_t一定是8位的整型,
int16_t和uint16_t一定是16位的整型,
int32_t和uint32_t一定是32位的整型,
int64_t和uint64_t一定是64位的整型