枚举
什么是枚举
枚举(Enumeration)是C语言中的一种用户自定义数据类型,用于定义一组相关的常量。枚举使我们可以为这些常量分配有意义的名字,从而提高代码的可读性和可维护性。
如果我们定义一个变量,用来表示一周中的一天,该变量的值只能从七个有效值中选择,枚举可以帮助我们限制变量的有效值。
如何定义枚举
语法格式
枚举使用 enum 关键字来定义,枚举名称和枚举元素名称都是标识符,定义一个枚举就是定义了一种枚举数据类型,语法如下:
enum 类型名
{
枚举常量,
枚举常量,
枚举常量,
枚举常量
...
}enum 类型名
{
枚举常量 = 整数,
枚举常量,
枚举常量,
枚举常量
...
}
枚举常量
枚举元素也称为枚举成员或枚举常量,具有如下特点:
(1)枚举元素的值必须在同一枚举中是唯一的
(2)枚举元素的值必须是整数类型,通常是int
(3)如果没有为枚举元素指定值,编译器会自动为它们分配值,从0开始,依次递增。
(4)定义枚举的时候也可以为枚举元素自定义值,需保证唯一性和整型类型。
#include <stdio.h>
enum Bool
{
FALSE, // 0
TRUE, // 1
// 未显式赋值时,第一个常量默认为0,后续依次+1
};
int main()
{
// 定义 Bool 类型的变量
enum Bool b1 = TRUE;
enum Bool b2 = FALSE;
printf("b1=%d \n", b1);
printf("b2=%d \n", b2);
// 只能从预定义常量中选择(TRUE/FALSE),不能直接赋其他整数值
printf("%d %d \n", TRUE, FALSE);
printf("%zu %zu \n", sizeof TRUE, sizeof FALSE);
printf("%zu %zu \n", sizeof b1, sizeof b2);
printf("\n");
return 0;
}
定义枚举变量的三种方法
第一种 先定义类型,再定义变量
第二种 同时定义类型和变量
第三种 同时定义类型和变量,省略类型名
#include <stdio.h>
int main()
{
/*自定义枚举类型可以有作用域限制
定义在函数内部则只在该函数内可用
通常建议定义为全局类型 */
// 第一种 先定义类型,再定义变量
enum Gender
{
Female,
Male,
Abinary,
NonBinary
};
enum Gender g1 = Female;
// 第二种 同时定义类型和变量
enum Weekday
{
MONDAY = 1,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
} w1 = THURSDAY,
w2 = FRIDAY, w3 = SUNDAY;
enum Weekday w4 = MONDAY;
// 第三种 同时定义类型和变量,省略类型名
enum
{
MONDAY = 1,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
} wd = THURSDAY;
return 0;
}
指向枚举变量的指针
enum Gender *ptr = &g1;

5681

被折叠的 条评论
为什么被折叠?



