我读到stdint.h是用于可移植性的,但我很困惑。
如果我在32位系统上编写程序,uint32_t (无符号int)是4字节.
但是当该程序在16位系统上运行时,int为2字节,uint32_t (无符号int)为2字节。
我认为在这种情况下不能保证可移植性。有什么我理解错的地方吗?
发布于 2022-11-15 17:04:34
,有什么事情我理解错了吗?
是。
类型uint32_t始终是一个无符号整数类型,只有32位,没有一个是填充位。在许多与unsigned int类型相对应的现代系统上,它可能对应于一种不同的类型,例如unsigned long int。在没有具有正确属性的类型的系统上,根本没有定义它。
uint32_t和来自stdint.h的其他显式宽度数据类型的要点正是要解决您提出的问题,即(例如) unsigned int在不同的机器上有不同的大小。
发布于 2022-11-15 17:00:49
uint32_t和uint16_t是与int不同的类型。
虽然int的大小可能有所不同,但uint32_t总是32位,uint16_t总是16位。
https://stackoverflow.com/questions/74449478
复制相似问题