enum 变量内存大小(c++)
enum取值范围
如果一个enum中所有的枚举值非负,那么枚举的表示范围是[0,2^n - 1]。
C++中枚举变量的大小是 1<=sizeof(enum)<=sizeof(int) 字节 (1-4字节)
如果一个enum中所有的枚举值非负,那么枚举的表示范围是[0,2^n - 1]。
如果是有负值,那么范围就是[-2^n,2^n-1]。
如果对一个给定的整数值,如果使用强制转换,而其值又不在枚举的表示范围以内,其行为是未定义的。
C++中枚举变量的大小是 1<=sizeof(enum)<=sizeof(int) 字节 (1-4字节)
枚举默认是用int类型来存储的,占4个字节。可以存储的最大值是0xffffff。 可以通过继承方式改变枚举的大小,例如:
enum TypeChar : unsigned char
{};
TypeChar 类型变量大小占用1字节
代码:
#include <iostream> using namespace std; class A{ public: enum EnumTest {a =1,b = 5};//枚举类型没有占用内存(占用内存的只是变量) }; enum EnumTest{ a =1,b = 5 }; class B{ enum EnumTest enumTest1; }; enum EnumChar : unsigned char { A = 0x00, B, C = 0xff }; int main() { cout << "size of enum "<< sizeof(enum EnumTest) << endl; cout << "Class A veriable size " << sizeof(A) << endl;//内存大小最少是1字节(所以class A这里是1字节) cout << "Class B veriable size " << sizeof(B) << endl; cout << "sizeof EnumChar"<< sizeof(EnumChar) << endl; return 0; }
运行结果:
sizeof enum 4
Class A veriable size 1
Class B veriable size 4
sizeof EnumChar 1