45

同じですか?いいえの場合:違いは何ですか?はいの場合、なぜこのタイプが必要なのですか?

4

1 に答える 1

61

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

于 2013-02-16T15:23:09.393 に答える