+ 6
C++ - Size of an enum
Is size of an enum always 4?
2 Answers
+ 6
The standards doesn't specify the size of an enum.
The size of an enum is the size of the underlying integral type that can hold the biggest enumerated value, usually starts from int(4bytes) , if int cannot hold the values the compiler choose a bigger type.
For example if you declare ..
enum X{hello=12345677764};
The size will be 8.
Since c++11 you can declare a fixed underlying integral type.
I think char type still takes 4 bytes in most of the cases, 4 bytes are well optimized in most of the architectures.
+ 5
No, you can specify the type of an enum ( as long as it's an integral ).
Assuming a 64 bit system:
enum class A : unsigned long long {}; = 8 bytes
enum class A : char {}; = 1 byte
enum class A : int {}; = 4 bytes ( default type )