0

私のマシンでは、次の結果が得られます。

sizeof(long) = 8

sizeof(long int) = 8

どこで使用long intし、なぜ使用しないのintですか?

4

2 に答える 2

5

コメントに示されているように、あなたが提供した例は、あなたが尋ねた質問とは関係ありません。あなたの質問が意図されていた場合:

だから私の質問は、どこで使用するのかlong int、なぜ使用しないのlongですか?

... 答えは短いです。どちらを選んでも同じです。

これがあなたが尋ねた質問であり、その後にその答えが続きます:

だから私の質問は、どこで使用するのかlong int、なぜ使用しないのintですか?

int少なくとも、-32767 と 32767 の範囲内にある値を格納できることが保証されています。実装では、その範囲外の値を格納できるようにする決定を下す場合がありますが、必須ではありません。

long intまたはlong、少なくとも、-2147483647 と 2147483647 の範囲内にある値を格納できることが保証されています。ここでも、実装によって、その範囲外の値を格納できるようにする決定が行われる場合がありますが、必須ではありません。

したがって、移植可能なソフトウェアの開発に関心がある場合はintint. についても同様ですlong

移植可能なソフトウェアの開発に関心がなく、独自の実装のみに関心がある場合は、要件を最もよく満たすタイプを使用してください。とから、およびとintを確認することで、 の実装範囲を取得できます。INT_MININT_MAX<limits.h>longLONG_MINLONG_MAX

sizeofパディング ビットと負のゼロが存在する可能性があるため、整数型は必ずしもその範囲を正確に反映しているわけではないことに注意してください。

于 2013-04-08T04:49:56.627 に答える
0

単語を並べ替える前でも、次のすべてが同じ型を表していることに注意してください。

  • 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 ビット システム) になることもあります。次に、使用しますlongintlonglongより大きい範囲が必要な場合int。ただし、代わりに<inttypes.h>or<stdint.h>などの「ポータブル」タイプを使用することを検討することもできます。ただし、API が別の型を使用している場合は、おそらく API の型を使用する必要があります。int32_tint64_t

longいつとを使用するかについて尋ねるつもりならlong int、それは好みの問題です。無難にプレーンlongを使います。他の宣言との対称性に関するやむを得ない理由がない限り、他の宣言は使用しません。

于 2013-04-08T05:02:46.337 に答える