2013-02-16 6 views

Antwort

32

uint32_t (oder aber Pre-C++ 11 Compiler nennen es) ist garantiert eine 32-Bit-Ganzzahl ohne Vorzeichen; unsigned int ist jede vorzeichenlose ganze Zahl, die der Compiler am liebsten unsigned int aufruft, sofern sie die Anforderungen des Standards erfüllt (der eine minimale Reichweite von 0-65535 erfordert). Wie int, unsigned int ist typischerweise eine Ganzzahl, die für die aktuelle Architektur schnell zu manipulieren ist (normalerweise passt sie in ein Register), also wird sie verwendet, wenn eine "normale", schnelle Ganzzahl benötigt wird.

uint32_t wird stattdessen verwendet, wenn Sie eine Ganzzahl mit exakter Breite, z. serialisieren in Datei, oder wenn Sie diesen exakten Bereich benötigen oder Sie sich darauf verlassen, dass ein vorzeichenloser Überlauf genau unter 2^32-1 erfolgt.

beispielsweise auf einem 16-Bit-Prozessor unsigned int typischerweise 16 Bit breit sein, während uint32_t wird haben 32 Bits breit zu sein.


Übrigens, wie @Marc Glisse wies darauf hin, während unsigned int immer vorhanden ist, ist uint32_t nicht zwingend - eine bestimmte Compiler Umsetzung nicht bereitstellen kann. Dies liegt hauptsächlich daran, dass nicht alle Plattformen einen solchen Typ leicht bereitstellen können (typischerweise DSPs mit seltsamen Wortgrößen).

+3

Auch eine wird benötigt, um zu existieren und nicht die andere. –

+0

@ user1511417: es macht keinen Sinn zu fragen, welche "a priori" besser ist - sie haben beide ihren Nutzen, wie in der Antwort beschrieben. –

+0

@MarcGlisse: richtig, ich werde es der Antwort hinzufügen. –

Verwandte Themen