2013-02-16 2 views

ответ

32

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

+3

Кроме того, один должен существовать, а не другой. –

+0

@ user1511417: нет смысла спрашивать, что лучше «априори» - они оба используют их, как указано в ответе. –

+0

@MarcGlisse: Правильно, я добавлю его в ответ. –

Смежные вопросы