C/C++ では、基本的な整数データ型 (char short int long および long long) に関する定義が非常に緩やかです。この言語では、少なくともある範囲の値を表現できることが保証されていますが、特定のプラットフォーム (コンパイラー オペレーティング システム ハードウェア) ではそれよりも大きい可能性があります。
良い例は長いです。あるマシンでは、32 ビット (C で必要な最小値) になる場合があります。別のものでは64ビットです。正確に 32 ビット長の整数型が必要な場合はどうすればよいでしょうか?ここで int32_t が登場します。これは、特定のシステムが持つ正確に 32 ビットの整数型のエイリアスです。
テンプレート:
intN_t or uintN_t Where N is width of integer which can be 8 16 32 64 or any other type width supported by the library.
CPP
// C++ program to show use of extended integral types #include using namespace std; int main() { uint8_t i; // i with width of exact 8 bits // Minimum value represented by unsigned 8 bit is 0 i = 0; cout << "Minimum value of it: "<< (int)i << endl; // Maximum value represented by unsigned 8 bit is 255 i = 255; cout << "Maximum value of it: "<< (int)i << endl; // Warning: large integer implicitly truncated to // unsigned type. It will print any garbage value i = 2436; cout << "Beyond range value of it: " << (int)i << endl; return 0; }
出力:
In function 'int main()': 19:7: warning : large integer implicitly truncated to unsigned type [-overflow] i = 2436; ^ Minimum value of i : 0 Maximum value of i : 255 Beyond range value of i : 132
さまざまなバリエーション
1. 固定幅の符号なし 8 ビット整数: uint8_t
つまり、ちょうど 8 ビットの unsigned int を与えてください。
2. 符号なし 8 ビット整数の最小幅: uint_least8_t
これは、少なくとも 8 ビットを持つ最小の型の unsigned int を教えてくださいという意味です。メモリ消費量を最適化。
3. 最速の最小幅の符号なし 8 ビット整数: uint_fast8_t
これは、プログラムを高速化するために、少なくとも 8 ビットの unsigned int を提供することを意味します。アライメントを考慮して、より大きなデータ型が選択される場合があります。速度を重視して最適化されています。
したがって、uint8_t は正確に 8 ビット幅であることが保証されます。 uint_least8_t は、少なくとも 8 ビット幅であることが保証されている最小の整数です。 uint_fast8_t は、少なくとも 8 ビット幅であることが保証されている最速の整数です。
したがって、拡張整数型は記述に役立ちます ポータブル そして 効率的 コード。