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