26

uint32_tとの違いは何だろうと思っていuint32ましたが、ヘッダー ファイルを調べたところ、次のように表示されていました。

types.h:

    /** @brief 32-bit unsigned integer. */
    typedef unsigned int uint32;
stdint.h:

    typedef unsigned   uint32_t;

これは、より多くの質問につながるだけです:

unsigned varName;

unsigned int varName;

?

私は使っているMinGW.

4

4 に答える 4

22

unsignedunsigned intは同義語で、 と によく似unsigned short [int]unsigned long [int]います。

uint32_t(オプションで) C 標準で定義されている型です。uint32たまたま同じものとして定義されていますが、あなたが作った名前です。

于 2012-08-02T21:38:36.437 に答える
5

違いはありません。

unsigned int = uint32 = uint32_t = unsignedあなたの場合、そしてunsigned int = unsignedいつも

于 2012-08-02T21:35:31.400 に答える
3

unsigned歴史的unsigned intな理由から同義です。どちらも「CPU アーキテクチャ/プラットフォームにとって最も自然なサイズの符号なし整数」を意味し、最新のプラットフォームでは多くの場合 (常にではありませんが) 32 ビットです。

<stdint.h>uint32_tは、C99 の標準ヘッダーであり、命名規則に従って、特定のサイズの整数の型定義を提供することになっています。

<types.h>あなたが見ているのは非標準のようで、おそらくあなたのプロジェクトが使用しているフレームワークに属しています。そのuint32typedef は と互換性がありuint32_tます。コードでどちらを使用するかは、マネージャーの問題です。

于 2012-08-02T21:40:14.980 に答える
2

と の間にはまったく違いはありませunsignedunsigned int

ただし、そのタイプが適切に一致するかどうかuint32_tは実装に依存します。anintは 32 ビットより「短い」可能性があります。

于 2012-08-02T21:35:24.013 に答える