14

次の関数では:

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

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

4

1 に答える 1

27

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

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

ウィキペディアからの詳細:

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

実際には、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 ビットです。

于 2013-03-19T17:01:29.140 に答える