C语言学习--枚举

枚举

什么是枚举

枚举(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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值