3

(32ビット)(特にC / C ++)と比較したchar(8ビット)やshort(16ビット)のような小さなデータ型の利点を誰かが私に説明できますか?int

私の考えでは、それは特に利点をもたらしません。32ビットマシンでは、ワードサイズが常に32ビットであるためです。場合によっては、メモリを節約するために、いくつかの小さな型を1つのレジスタに組み合わせることができるのはコンパイラのことですか?では、小さなデータ型は、32ビット未満のハードウェアアーキテクチャやメモリの少ないハードウェアアーキテクチャを対象としているのでしょうか。

さらに、データ型がオーバーフローすることで障害の新しいターゲットが表示されるので、軽く使用するべきではないと思います...

4

1 に答える 1

2

マシンのワードサイズが32ビットであっても、すべてのデータ型がワード境界に格納されているわけではなく、情報ストレージの最小単位がワードであるという意味でもありません。1000文字のベクトルを作成する必要があるとします。このように作成した場合:

std::vector<char> v(1000);

約1000バイトを使用します(通常)。最小ストレージ単位がワードであると想定する場合は、代わりに次のように宣言できます(とにかく、各文字は32ビットワードを使用すると考えてください)。

std::vector<int> v(1000);

ただし、これにより、前の宣言の4倍である約4バイト*1000が得られます。

つまり、タイプの宣言方法によっては、パックされることがあるため、各情報を格納するために単語を使用することはありません。最初のケースでは、のコンパイラ/実装はvector<char>、パックされたすべての文字を格納するために1000バイトのバッファを作成します。

したがって、答えは、メモリスペースを節約できるという利点があります。

于 2011-07-14T08:31:18.737 に答える