ほとんど/すべてのプラットフォームで機能する「unsiged integer」用に定義された短縮ラベル typedef はありますか? Windows では uint または UINT をよく見かけますが、これは他のプラットフォームでは一貫して実装されていないことを理解しています。すべてのインスタンスに「unsigned int」と入力しても問題ありませんが、標準の typedef (「uint」など、一貫して実装されているわけではありません) がある場合は、それを使用します。少し調べてみると、これは当てはまらないと思いますが、人々はたとえば. C++11 など、または同じラベルを実装する *nix/Windows 全体の標準ヘッダー。unsigned int のビット サイズを厳密に指定することにはあまり関心がありません。これは反復回数の少ないループにのみ使用されます。
3 に答える
基本的に、型のサイズは、使用しているコンパイラと、ターゲット プログラム (実行可能ファイル) が実行されるプラットフォームによって定義されます。
たとえば、x86 マシンでは、ほとんどすべてのコンパイラがint
(したがってunsigned int
) を標準の 32 ビット整数を意味します。ただし、仮想の 128 ビット CPU では、int
おそらく 64 ビットまたは 128 ビットの整数を参照します。
ただし、私のように整数のサイズを常に知りたい場合はcstdint
、C++11 で導入されたヘッダーを確認することをお勧めします。
uint32_t
これにより、コンパイラやプラットフォームとは関係なく、特定のサイズ ( など) の整数を指定できます。ただし、特定のプラットフォームがそのサイズをサポートしていない場合、プログラムはコンパイルされないことに注意してください。
詳細については、このサイトを参照してください: http://www.cplusplus.com/reference/cstdint/#include <stdint.h>
C および#include <cstdint>
C++ に
使用します。
言語標準および標準ライブラリは、代替名を提供する以外の目的を果たさない型の「単純な」エイリアスを定義していません。
標準ライブラリでは、プラットフォームに依存する意味を持ついくつかの型エイリアスが定義されています。たとえば、整数型std::uintptr_t
は、任意のオブジェクト ポインター値を表すのに十分な大きさの整数型です。-value がプラットフォームが提供する最大のstd::max_align_t
型です。alignof
他の型エイリアスは、条件付きで定義されたstd::uint32_t
etc であり、存在する場合、2 の補数表現を持つ固定幅の整数型です。当然、これらは基本的な型の 1 つの typedef にすぎませんが、意味は異なり、どれも自明ではありません。したがって、これらの typedef を使用する正当な理由があります。