是一样的吗?如果不是:有什么区别?如果是,那么为什么需要这种类型?
问问题
45179 次
1 回答
61
uint32_t
(或者 C++11 之前的编译器调用它)保证是 32 位无符号整数;unsigned int
是编译器最喜欢调用的无符号整数unsigned int
,只要它符合标准的要求(要求它的最小范围为 0-65535)。
比如int
,unsigned int
通常是一个在当前架构下可以快速操作的整数(通常它适合一个寄存器),所以当需要一个“正常”的快速整数时使用它。
uint32_t
相反,当您需要一个精确宽度的整数时使用,例如序列化到文件,或者当您需要该精确范围或您依赖无符号溢出恰好发生在2^32-1
.
例如,在 16 位处理器unsigned int
上通常是 16 位宽,而必须uint32_t
是32 位宽。
顺便说一句,正如@Marc Glisse所指出的,虽然unsigned int
总是存在,uint32_t
但不是强制性的——特定的编译器实现可能不会提供它。这主要是因为并非所有平台都可以轻松提供这种类型(通常是字长奇怪的 DSP)。
于 2013-02-16T15:23:09.393 回答