私のマシンでは、次の結果が得られます。
sizeof(long) = 8
sizeof(long int) = 8
どこで使用long int
し、なぜ使用しないのint
ですか?
私のマシンでは、次の結果が得られます。
sizeof(long) = 8
sizeof(long int) = 8
どこで使用long int
し、なぜ使用しないのint
ですか?
コメントに示されているように、あなたが提供した例は、あなたが尋ねた質問とは関係ありません。あなたの質問が意図されていた場合:
だから私の質問は、どこで使用するのか
long int
、なぜ使用しないのlong
ですか?
... 答えは短いです。どちらを選んでも同じです。
これがあなたが尋ねた質問であり、その後にその答えが続きます:
だから私の質問は、どこで使用するのか
long int
、なぜ使用しないのint
ですか?
int
少なくとも、-32767 と 32767 の範囲内にある値を格納できることが保証されています。実装では、その範囲外の値を格納できるようにする決定を下す場合がありますが、必須ではありません。
long int
またはlong
、少なくとも、-2147483647 と 2147483647 の範囲内にある値を格納できることが保証されています。ここでも、実装によって、その範囲外の値を格納できるようにする決定が行われる場合がありますが、必須ではありません。
したがって、移植可能なソフトウェアの開発に関心がある場合はint
、int
. についても同様ですlong
。
移植可能なソフトウェアの開発に関心がなく、独自の実装のみに関心がある場合は、要件を最もよく満たすタイプを使用してください。とから、およびとint
を確認することで、 の実装範囲を取得できます。INT_MIN
INT_MAX
<limits.h>
long
LONG_MIN
LONG_MAX
sizeof
パディング ビットと負のゼロが存在する可能性があるため、整数型は必ずしもその範囲を正確に反映しているわけではないことに注意してください。
単語を並べ替える前でも、次のすべてが同じ型を表していることに注意してください。
long
long int
signed long int
signed long
順列を使用すると、次のことが可能になります。
long l0;
long int l1;
int long l2;
signed long int l3;
signed int long l4;
long signed int l5;
long int signed l6;
int signed long l7;
int long signed l8;
signed long l9;
long signed lA;
ほとんどの正気な人は、ほとんどの場合、long
このタイプを示すために単純に書きます。
あなたの実際の質問は、いつ使用するかlong int
、いつ使用するかについてint
です。技術的には、によって保証される値の範囲int
は ±32,767 (または ±(2 15 -1)) です。それより大きい値が必要な場合は、 を使用する必要がありますlong
。ただし、int
の範囲が ±(2 31 -1) (多かれ少なかれ) であることがよくあります。の範囲が(32 ビット システム; 64 ビット Windows)long
と同じになる場合があります。orint
を使用する主な理由は、インターフェイスを特定の API に一致させることです (同じ範囲をサポートしていても、型は依然として異なるため)。場合によっては、 の範囲が ±(2 63 -1) (64 ビット Windows 以外の 64 ビット システム) になることもあります。次に、使用しますlong
int
long
long
より大きい範囲が必要な場合int
。ただし、代わりに<inttypes.h>
or<stdint.h>
などの「ポータブル」タイプを使用することを検討することもできます。ただし、API が別の型を使用している場合は、おそらく API の型を使用する必要があります。int32_t
int64_t
long
いつとを使用するかについて尋ねるつもりならlong int
、それは好みの問題です。無難にプレーンlong
を使います。他の宣言との対称性に関するやむを得ない理由がない限り、他の宣言は使用しません。