0

重複の可能性:
C++ の int 型と long 型が両方とも 4 バイトなのはなぜですか?

C/C++ では、次の違いは何ですか:

u_int64 myNum;

と:

unsigned long myNum;

私が知る限り、どちらも 64 ビットのメモリを持つ符号なし整数だけを食べました。

4

3 に答える 3

8

unsigned long64 ビットである必要はありません、64 ビットである必要はありuint64_tません。整数型には一種の階層があり、各型は少なくとも前の型より大きくなければなりません: signed charshortintlonglong longおよび符号なしの対応する型についても同様です。アンカーポイントがいくつかあり、それcharは 1 バイトです (1 バイトは 8 ビットである必要はありません。覚えている限り、short少なくとも2 バイト16 ビットです。C++11 では、long long は少なくとも 64 ビットです。しかし、これらのタイプのいずれも、正確に指定されたビット数ではありません。

詳細については、固定幅の整数型を参照してください (リンクについては @chris に感謝します)。

于 2013-01-16T22:29:50.157 に答える
0

intC言語自体は、その大きさを指定していません

long少なくとも同じ長さint
long longである必要がありますlong

またu_int64_t、c99タイプであり、ANSIc89では使用できません。

また、違いのある64ビットアーキテクチャの中で、LP64はlong'sとポインタが64ビットであることを示し、LLP64は'sとポインタが64ビットであることを意味しlong longます。

于 2013-01-16T22:32:30.130 に答える
0

unsigned longintC /C++のすべてのようにマシンに依存しています。多くのライブラリ、特に2台のマシンが相互作用できるライブラリintは、両方が同じサイズであることを確認するために、ほとんどの場合、数字のようにdefと入力します。u_int64基本的には、defを64ビットの符号なし整数に入力して、任意のマシンで使用できるようにします。理論的unsigned longには、128、64、256、またはほぼすべてのサイズにすることができます。

于 2013-01-16T22:35:36.173 に答える