35

type の変数を使用するようになりましたuint16_tが、プロジェクトの制限により、そのデータ型を使用できません。unsigned short int代わりにすることは可能uint16_tですか?両者の違いがわかりません。誰か明確にしてくれませんか?

4

2 に答える 2

52

uint16_t符号なし 16 ビット整数です。

unsigned short intunsigned short integer ですが、サイズは実装に依存します。標準では、少なくとも 16 ビット (つまり、 の最小値UINT_MAX65535) であるとだけ述べられています。実際には、通常は 16 ビットですが、それを保証することはできません。

ノート:

  1. ポータブルな符号なし 16 ビット整数が必要な場合は、 を使用しますuint16_t
  2. inttypes.hstdint.hどちらも C99 で導入されました。C89 を使用している場合は、独自の型を定義してください。
  3. uint16_t特定の実装では提供されない場合がありますが (以下の参照を参照)、unsigned short int常に利用可能です。

参考:C11(ISO/IEC 9899:201x) §7.20整数型

実装が提供する、ここで説明されている各タイプに対して、その typedef 名を宣言し、関連するマクロを定義する必要があります。逆に、実装が提供しない、ここで説明されている各型については、その typedef 名を宣言してはならず、関連するマクロを定義してはなりません。実装は、「必須」と記述されているタイプを提供する必要がありますが、他のタイプ (「オプション」と記述) を提供する必要はありません。

于 2013-07-17T07:15:08.440 に答える
21

uint16_t16ビットの符号なし整数であることが保証されています

unsigned short intshort integerは unsignedであることが保証short integerされ、 は現在使用しているコンパイラ (および場合によってはコンパイラ フラグ) によって定義されます。x86 ハードウェア用のほとんどのコンパイラでは、ashort integerは 16 ビットの大きさです。

また、ANSI C 規格では、最小サイズの 16 ビットのみが定義されており、最大サイズはコンパイラの開発者に任されていることに注意してください。

型の最小制限

標準に準拠するすべてのコンパイラは、特定の型が受け入れる値の範囲に関して、次の制限も尊重する必要があります。これらは下限であることに注意してください。実装は、これらのいずれかまたはすべてを自由に超えることができます。また、char の最小範囲は、char が符号付きまたは符号なしと見なされるかどうかに依存することに注意してください。

タイプ最小範囲

signed char     -127 to +127
unsigned char      0 to 255
short int     -32767 to +32767
unsigned short int 0 to 65535
于 2013-07-17T07:16:37.783 に答える