1

Storable(c2hs を使用して) 5 つのオプションを持つ C 列挙型のインスタンスを書き込むと、{# sizeof #}マクロは 4 (つまり 4 バイト) を返します。3ビットで十分なのに、これは非常に無駄ではありませんか?これはメモリワードのサイズに依存しますか?

4

1 に答える 1

1

enum のサイズは実装定義です。標準は次のように述べています。

6.7.2.2 列挙指定子
...

各列挙型はchar、符号付き整数型、または符号なし整数型と互換性があります。タイプの選択は実装定義です...

ところで、C++ では、基になる型を明示的に指定できます。たとえば、次のようになります。

enum E : int
{
    // ...
};
于 2016-05-26T15:19:51.977 に答える