同じですか?いいえの場合:違いは何ですか?はいの場合、なぜこのタイプが必要なのですか?
1 に答える
uint32_t
(または、C ++ 11より前のコンパイラではそれを呼び出します)は、32ビットの符号なし整数であることが保証されています。は、標準の要件(0〜65535の最小範囲を要求する)を満たしている限りunsigned int
、コンパイラーが呼び出すのに最適な符号なし整数です。unsigned int
のようint
に、unsigned int
通常は現在のアーキテクチャで高速に操作できる整数であるため(通常はレジスタに収まります)、「通常の」高速整数が必要な場合に使用されます。
uint32_t
代わりに、ファイルにシリアル化する場合など、正確な幅の整数が必要な場合、またはその正確な範囲が必要な場合、またはで正確に発生するように符号なしオーバーフローに依存している場合に使用され2^32-1
ます。
たとえば、16ビットプロセッサでunsigned int
は通常16ビット幅ですuint32_t
が、 32ビット幅である必要があります。
ちなみに、 @ Marc Glisseが指摘しているように、unsigned int
常に存在しuint32_t
ますが、必須ではありません。特定のコンパイラ実装では提供されない場合があります。これは主に、すべてのプラットフォームがそのようなタイプを簡単に提供できるわけではないためです(通常、奇妙なワードサイズのDSP)。