web-dev-qa-db-ja.com

Cの「短い」データ型とは何ですか?

次の関数では:

void AddWordData(FILE* dataFile, short Word, int* dc)
{
    fprintf(dataFile, "%06o\n", Word);
    ++(*dc);
} 

関数は短い型を取得しています。ウェブで検索を行いましたが、短いintしか見つかりませんでした。関数が短い型を取得しているときはどういう意味ですか?それはどのデータ型ですか?

11
Yuval

shortshort intの略です。それらは同義語です。 shortshort intsigned shortsigned short intはすべて同じデータ型です。 shortの正確なビット数はコンパイラとシステムによって異なりますが、 少なくとも16ビット が必要です。

標準に準拠するコンパイラは、特定の型が受け入れる値の範囲に関して、次の制限も遵守する必要があります。これらは下限であることに注意してください。実装はこれらのいずれかまたはすべてを自由に超えることができます。また、charの最小範囲は、charが符号付きまたは符号なしと見なされるかどうかに依存することにも注意してください。 ... short int:-32767〜+32767。

その他の Wikipedia

整数型の実際のサイズは実装によって異なります。唯一の保証は、long longがlongより小さくなく、intより小さくなく、shortより小さくないことです。また、intは、ターゲットプロセッサが最も効率的に動作する整数型である必要があります。これにより、柔軟性が大幅に向上します。たとえば、すべてのタイプを64ビットにすることができます。ただし、普及しているのはいくつかの異なる整数幅スキーム(データモデル)だけであり、データモデルはさまざまなプログラムの通信方法を定義するため、特定のオペレーティングシステムアプリケーションインターフェイス内で統一されたデータモデルが使用されます。

実際には、charのサイズは通常8ビット、shortは通常16ビット、longは通常32ビットです(同様に、unsigned char、unsigned short、unsigned long)。たとえば、これは、1990年代のさまざまなプラットフォーム、Sun0S 4 Unix、Microsoft MSDOS、最新のLinux、および組み込み8ビットPICマイクロコントローラー用のMicrochip MCC18に当てはまります。

編集:

LP64(Windows以外のすべての64ビットオペレーティングシステム)では、charは8ビット、shortは16ビット、intは32ビット、longは64ビット、long longは128ビットの場合があります。

WindowsはLLP64を維持します。charは8ビット、shortは16ビット、intは32ビット、longは32ビット、long longは64ビットです。

23
Claudiu