它是一样的吗?如果不是:有什么区别? 如果是,那你为什么需要这种类型?
答案 0 :(得分:41)
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)。