我读到这stdint.h是用于便携性的,但我很困惑。
如果我在32位系统上编写程序,uint32_t(unsigned int)是4个字节。
但是当这个程序在16位系统上运行时,int是2bytes,uint32_t(unsigned int)是2bytes。
我认为在这种情况下无法保证可移植性。我理解有什么错误吗?
我有什么理解错误的地方吗?
是的。
类型始终uint32_t是具有 32 位的无符号整数类型,其中没有填充位。在许多现代系统上对应于 type ,但在其他系统上它可能对应于不同的类型,例如。在没有具有正确属性的类型的系统上,根本没有定义它。unsigned intunsigned long int
uint32_t和其他显式宽度数据类型的目的stdint.h正是为了解决您提出的问题,(例如)unsigned int在不同的机器上具有不同的大小。