C/C++ では、次の違いは何ですか:
u_int64 myNum;
と:
unsigned long myNum;
私が知る限り、どちらも 64 ビットのメモリを持つ符号なし整数だけを食べました。
C/C++ では、次の違いは何ですか:
u_int64 myNum;
と:
unsigned long myNum;
私が知る限り、どちらも 64 ビットのメモリを持つ符号なし整数だけを食べました。
unsigned long
64 ビットである必要はありませんが、64 ビットである必要はありuint64_t
ません。整数型には一種の階層があり、各型は少なくとも前の型より大きくなければなりません: signed char
、short
、int
、long
、long long
および符号なしの対応する型についても同様です。アンカーポイントがいくつかあり、それchar
は 1 バイトです (1 バイトは 8 ビットである必要はありません。覚えている限り、short
少なくとも2 バイト16 ビットです。C++11 では、long long は少なくとも 64 ビットです。しかし、これらのタイプのいずれも、正確に指定されたビット数ではありません。
詳細については、固定幅の整数型を参照してください (リンクについては @chris に感謝します)。
int
C言語自体は、その大きさを指定していません
long
少なくとも同じ長さint
long long
である必要がありますlong
またu_int64_t
、c99タイプであり、ANSIc89では使用できません。
また、違いのある64ビットアーキテクチャの中で、LP64はlong
'sとポインタが64ビットであることを示し、LLP64は'sとポインタが64ビットであることを意味しlong long
ます。
unsigned long
int
C /C++のすべてのようにマシンに依存しています。多くのライブラリ、特に2台のマシンが相互作用できるライブラリint
は、両方が同じサイズであることを確認するために、ほとんどの場合、数字のようにdefと入力します。u_int64
基本的には、defを64ビットの符号なし整数に入力して、任意のマシンで使用できるようにします。理論的unsigned long
には、128、64、256、またはほぼすべてのサイズにすることができます。