龙岗专业做网站公司,合格的网站设计师需要会什么软件,男做暧免费视频网站,那个大学业做网站目录
普通枚举
强类型枚举 普通枚举
枚举类型在C中是通过关键字enum来定义的。下面是一个简单的例子#xff1a;
enum Color { RED, GREEN, BLUE
};
在这个例子中#xff0c;我们定义了一个名为Color的枚举类型#xff0c;它包含了三个枚举值#xff1a;RED、GRE…目录
普通枚举
强类型枚举 普通枚举
枚举类型在C中是通过关键字enum来定义的。下面是一个简单的例子
enum Color { RED, GREEN, BLUE
};
在这个例子中我们定义了一个名为Color的枚举类型它包含了三个枚举值RED、GREEN和BLUE。默认情况下第一个枚举值在这个例子中是RED的值为0后续的枚举值会依次递增。所以在这个例子中RED的值为0GREEN的值为1BLUE的值为2。
当然你也可以显式地为每个枚举值指定一个整数值
enum Color { RED 1, GREEN 2, BLUE 4
};
在这个修改后的例子中RED的值为1GREEN的值为2BLUE的值为4。
你可以使用枚举类型来声明变量并给这些变量赋值枚举值
Color myColor RED;
此外你还可以使用枚举类型作为函数参数的类型或者作为数组、结构或类的成员的类型。这都可以提高代码的可读性和可维护性。
注意虽然枚举值在定义时是命名的整数值但在使用时它们通常被视为它们的底层整数值。因此你可以将枚举值赋给整数类型的变量也可以将整数类型的值赋给枚举类型的变量只要这个整数值在枚举值的范围内。但是这样做可能会降低代码的可读性和可维护性所以应该尽量避免。 强类型枚举
在C中从C11开始你可以为枚举类型指定一个底层数据类型underlying type以控制枚举值的大小和范围。
#include iostream enum class Color : unsigned char { RED 1, GREEN 2, BLUE 4
}; int main() { Color myColor Color::RED; // 输出枚举值的底层整数表示 std::cout The value of RED is: static_castunsigned char(myColor) std::endl; // 尝试将一个大于底层类型范围的整数赋值给枚举变量这会导致编译错误 // Color myOtherColor Color(256); // 这将不会编译通过因为256超出了unsigned char的范围 return 0;
}
在这个例子中Color枚举类型被指定了一个底层数据类型unsigned char。这意味着枚举值RED、GREEN和BLUE将使用unsigned char类型来存储。如果尝试将一个超出unsigned char范围的值赋给Color类型的变量编译器将会报错。
注意在这个例子中我还使用了enum class而不是enum。enum class是C11中引入的强类型枚举strongly typed enumeration它提供了更好的类型安全性和作用域控制。使用enum class时枚举值需要使用枚举类型名和::作用域解析运算符来访问例如Color::RED。而传统的enum也称为非类型安全的枚举或旧式枚举则没有这样的作用域限制它们的枚举值将直接处于包含它们的命名空间中。