我们知道的常用数据类型有char、int、double、flout、string、struct等,其实这里的uint8_t不是什么新的数据类型,他只是用typedef定义出来的一个东东,那么为什么会有uint8_t数据类型的出现呢,其实主要是为了预防程序在不同平台之间移植会出现不兼容性,如果我们看到一个int类型数据,我们并不知道他有多少位,因为有的运行平台是32位系统,有点是64位,并且由于编译器等的不同都会导致int类型数据的大小不一样,那么如何避免由于系统或编译器不同导致的程序移植的不兼容性呢,我们就想到了使用typedef自己定义几个数据类型,将容易出现“不和谐”的几个变量使用我们自己定义的数据类型,并且将typedef定义在自己的头文件中,这样就既稳定又方便了。也许你会问,为什么我看到的代码中,只看到了使用uint8_t数据类型,没看到关于他的头文件呢,是这样的,在c99中提供了一个可选的名字集合,用来确切的描述数据类型大小,例如int16_t表示一个16位有符号的整数类型,并且c99已经将这一系列定义在了一个名字叫做inttypes.h的头文件中了,不过并不一定你的编译器就包括这个头文件哦。相信到这里你已经明白了uint8_t数据类型存在的意义,如果没有#include <inttypes.h>,至于他们的大小,只有你才知道,你定义多大,那他就是多大,如果你喜欢你可以定义typedef unsigned char uchar123_t或者typedef unsignet char uchar321_t,不过尽量要让名字具有可读性哦。
参考资料:c primer plus(第五版) 中文版 第46页