1. ホーム
  2. c

[解決済み] 64ビットプロセッサの場合、uint16_tとunsigned short intの違いは何ですか?

2022-03-01 13:12:07

質問

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

解決方法は?

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

unsigned short int は unsigned short integer であるが、サイズは実装に依存する。規格では、少なくとも16ビット(つまり、最小値は UINT_MAX65535 ). 実際には、通常は16ビットですが、それが保証されているとは思えません。

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

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

実装が提供する本明細書に記載された各型について)その typedef 名を宣言し、関連するマクロを定義しなければならない。逆に,ここに記述された各型のうち,実装が提供しないものについては,その typedef 名を宣言してはならず,関連するマクロを定義してはならない。実装は,''required''と記述された型を提供しなければならないが,その他の型(optional''と記述)を提供する必要はない。