为什么枚举对象可以具有除C中的枚举器以外的值?

轮播

这是我的代码:

#include <stdio.h>
int main()
{   
    enum C {green = 5, red};
    enum CC {blue, yellow} cc = green;
    printf("%i\n", cc);
    return 0;
}

它会编译并产生控制台输出5。

cppreference.com说:“枚举类型是一种独特的类型,其值被限制为几个显式命名的常量(枚举常量)之一。” 我真的很困惑。

顺便说一句,我正在使用的编译器是gcc版本4.8.1。

增加

从std 6.7.2.3(枚举内容)开始-的基础类型enum是实现定义的,但是type的变量enum可以分配任意数量的基础类型(至少是char)。

每个枚举类型应与char,有符号整数类型或无符号整数类型兼容。类型的选择是实现定义的,但应能够表示枚举的所有成员的值枚举类型是不完整的,直到紧接终止枚举器声明列表的}之后,然后才完成。

不需要编译器检查enum变量中存储的内容对于该枚举是否有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么对象实例中的枚举具有静态上下文?

c中具有分配值的枚举的静态查找表

为什么C ++ 20中没有枚举概念?

Java中具有int值的枚举

为什么枚举可以具有包私有的构造函数?

枚举C中的所有枚举名称/值

为什么 SDL2 枚举具有很高的意外值?

为什么枚举权限通常具有0、1、2、4值?

从c#中任何枚举类型的枚举对象获取枚举名称和字符串值

为什么枚举在Swift中具有计算属性但没有存储属性?

为什么您可以访问范围之外的枚举器?

Swift枚举可以具有多个原始值吗?

打字稿:从枚举值生成具有映射属性的对象

为什么Rust具有结构和枚举?

为什么Python枚举中的可变值是同一对象?

如何在具有[Flags]枚举值的自定义对象列表中查找元素

Swift-在具有关联值的枚举数组中查找对象

为什么枚举常量而不是struct声明中的成员具有文件作用域?

为什么C预处理器认为枚举值相等?

有什么方法可以检查对象是否为TypeScript中的枚举类型?

为什么.NET的DayOfWeek枚举没有空值?

具有默认值的不可枚举的枚举初始化器

有什么办法可以给C#枚举值一个“范围”?

是否可以在flutter中定义具有键值的枚举

具有枚举的C#

何时允许编译器优化 C++ 中枚举或枚举类类型值的有效性检查?

为什么Java枚举值中的某些常量字段没有?

如何在C / C ++中对具有多个相似值的枚举进行switch()?

为什么C#编译器允许空枚举?