longおよびint組み込み型のサイズをテストした場合、両方が4バイトであることがわかったときに、疑問が生じる可能性があります。すべて4バイトの場合、longはより広いストレージ範囲を提供しません。それでは、longの使用は何ですか。 ?この記事の次の内容は、これらの疑問を解決します。
まず、以下のビルトインタイプの開発について簡単に説明します。抜けがある場合は訂正してください。C言語の初期には、char(8ビット)とint(16ビット)の2種類しかありませんでしたが、その後、開発に伴い、short(16ビット)とlong(32ビット)が追加されました。現時点では、intは16ビットまたは32ビットになります。プラットフォームとその後の互換性によって異なります。その後、64ビットが登場すると、long long(64ビット)が追加されました。標準化するために、小さいタイプの範囲にいくつかの調整が加えられ、徐々にint32ビットに安定化されました。longには複数の定義があります。 32ビットまたは64ビットにすることができます。
C ++標準では、longは少なくともintと同じ大きさである必要があり、すべての整数型は実装時に次の仕様を満たす必要があるとのみ規定されています。
sizeof(char) == 1
sizeof(char) <= sizeof(short)
sizeof(short) <= sizeof(int)
sizeof(int) <= sizeof(long)
sizeof(long) <= sizeof(long long)
charとlonglongを除いて、他のタイプはより柔軟性があり、プラットフォームと実装に依存します。プラットフォームの独立性を実現したい場合は、Windowsプラットフォームで__intnを使用でき、nはビット数を表します。__int8 __int16 __int32__int64。