在cpp中枚举的内存需求是什么?
What is the memory requirement of an enum in cpp?
我正在创建一个具有许多部件的大规模模拟,我使用枚举来区分多个部件。我想知道使用枚举的内存成本是多少,因为我想保持部件占用的空间最小。
使用uint8_t代替enum是否更好?
在c++(任何版本)中,默认情况下枚举的底层类型是int
,除非每个枚举值都不能表示为int
。在这种情况下,使用实现定义的类型(一个大到足以表示每个枚举数值的类型)。注意,int
的大小取决于您的机器。它可能是16位,但也可能是32位(即使在64位机器上)。最终由编译器决定。
从c++ 11开始,可以在声明枚举时指定底层类型,使用以下形式:
enum name : underlying_type { ... };
// For example
enum MySmallEnum : char { ... };
来源:cppreference.com
在C中,它似乎遵循与c++ (c++ 11之前)相同的规则。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- 抽象类的需求是什么?为什么要通过其基类访问派生类方法?在C++
- C++-缓冲区和流的需求是什么
- 当我们可以使用普通函数修改静态数据成员时,静态成员函数的需求是什么?
- (num+mod)%mod语句的需求是什么?
- MSYS在Windows中使用MinGW的需求是什么
- STL分配器复制构造函数需求的目的是什么?
- 在cpp中枚举的内存需求是什么?