Mat*_*lia 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).