type の変数を使用するようになりましたuint16_t
が、プロジェクトの制限により、そのデータ型を使用できません。unsigned short int
代わりにすることは可能uint16_t
ですか?両者の違いがわかりません。誰か明確にしてくれませんか?
2 に答える
uint16_t
符号なし 16 ビット整数です。
unsigned short int
unsigned short integer ですが、サイズは実装に依存します。標準では、少なくとも 16 ビット (つまり、 の最小値UINT_MAX
は65535
) であるとだけ述べられています。実際には、通常は 16 ビットですが、それを保証することはできません。
ノート:
- ポータブルな符号なし 16 ビット整数が必要な場合は、 を使用します
uint16_t
。 inttypes.h
stdint.h
どちらも C99 で導入されました。C89 を使用している場合は、独自の型を定義してください。uint16_t
特定の実装では提供されない場合がありますが (以下の参照を参照)、unsigned short int
常に利用可能です。
参考:C11(ISO/IEC 9899:201x) §7.20整数型
実装が提供する、ここで説明されている各タイプに対して、その typedef 名を宣言し、関連するマクロを定義する必要があります。逆に、実装が提供しない、ここで説明されている各型については、その typedef 名を宣言してはならず、関連するマクロを定義してはなりません。実装は、「必須」と記述されているタイプを提供する必要がありますが、他のタイプ (「オプション」と記述) を提供する必要はありません。
uint16_t
16ビットの符号なし整数であることが保証されています
unsigned short int
short 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