Uint32和C ++中的unsigned int有什么区别?

时间:2013-02-16 15:20:34

标签: c++ types

它是一样的吗?如果不是:有什么区别? 如果是,那你为什么需要这种类型?

1 个答案:

答案 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)。