Подтвердить что ты не робот

В чем разница между Uint32 и unsigned int в С++?

Это то же самое? Если нет: какая разница? Если да, то зачем вам этот тип?

4b9b3361

Ответ 1

uint32_t (или, как утверждают компиляторы pre-С++ 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 со странными размерами слов).