2016-06-23 7 views
1

私は、多くの部分で大規模なシミュレーションを作成しています。私は、複数の部分を区別するためにenumを使用しています。私は、enumを使用することのメモリコストが何であるかを知りたいのですが、私はその部分が占めるスペースを最小限に抑えたいからです。cppの列挙型のメモリ要件は何ですか?

enumの代わりにuint8_tを使用する方が良いですか?

+2

一般的なCコンパイラは最小の整数サイズを割り当てます。 ... – lorro

+3

enum( 'enum foo:uint8_t {}')の整数型を指定することができます – Pubby

+0

注意: 'enum'はデフォルトで** signed **の整数です。 –

答えて

6

C++(任意のバージョン)では、すべての列挙子の値をintとして表すことができない限り、列挙型の基になる型はデフォルトでintです。 この場合、実装定義の型が使用されます(1つは、すべての列挙子の値を表すのに十分な大きさです)。 intのサイズは、お使いのマシンによって異なります。それは16ビットかもしれませんが、おそらく32ビットです(64ビットマシンでさえも)。最終的には、コンパイラによって決定されます。

C++ 11以降列挙を宣言するとき、あなたは次の形式を使用して、基になる型を指定することができます。

enum name : underlying_type { ... }; 

// For example 
enum MySmallEnum : char { ... }; 

出典:それは同じルールに従うようcppreference.com

In C、それはそうですC++(C++ 11以前)のように。

関連する問題