在c语言中由6种基本数据类型:short、int、long、float、double、char
整型:short int、int、long int
浮点数:float、double
字符类型:char
因此,uint8_t、uint16_t、uint32_t、uint64_t这些数据类型都只是别名,这些数据类型都带有_t,_t表示这些数据类型是通过typedef定义的,而不是新的数据类型。
那么_t的意思到底表示什么? 他就是一个结构的标注可以理解为type/typedef的缩写,表示它是通过typedef定义的。
使用这些类型的原因:方便代码的维护。比如,在C中没有bool型,于是在一个软件中,一个程序员使用int,一个程序员使用short,会比较混乱,最好用一个typedef来定义一个统一的bool,每个程序员都可以用这个别名的bool。
不同的平台会有不同的字长,所以利用预编译和typedef可以方便的维护代码。
typedef unsigned char uint8_t;//将uint8_t别名为无符号字符型
按照posix标准,一般整形对应的*_t类型为:
1字节 uint8_t
2字节 uint16_t
4字节 uint32_t
8字节 uint64_t
注意:
typedef unsigned char uint8_t;
必须小心 uint8_t 类型变量的输出。
typedef unsigned char uint8_t;//将uint8_t别名为无符号字符型
uint8_t buf = 65;
printf("buf = %d",buf);//错误
printf("buf = %c",buf);//正确,打印出字符的ASCII码 A