C语言入门4

7 枚举类型

在实际编程过程中,我们可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成此项工作:

#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7

 在此,我们定义了一种新的数据类型,来简化我们的编程工作,这就是以下要做介绍的枚举类型。

enum DAY
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
};

7.1 枚举类型的介绍

1)枚举是C语言中的一种构造数据类型,它可以让数据更简洁,更易读,对于只有几个有限的特定数据,可以使用枚举;

2)枚举是一组常量的集合,包含一组有限的特定的数据;

3)枚举和宏定义非常类似,宏定义是在预处理阶段将名字替换成对应的值,枚举是在编译阶段将名字替换成对应的值;

4)枚举语法定义格式:

enum 枚举名 {枚举元素1, 枚举元素2, ...};

7.2 枚举变量的定义

枚举类型可以通过以下四种方式进行定义:

1.先定义枚举类型,在定义枚举变量

enum DAY
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;

2.定义枚举类型同时定义枚举变量

enum DAY
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
} day;

3.省略枚举名称,直接定义枚举变量

enum
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
} day;

4.用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明

typedef enum DAY
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
} DAY; // 此处的DAY为枚举类型enum DAY的别名

DAY today, tomorrow; // 变量today和tomorrow的类型为枚举型DAY,也即enum DAY

enum DAY中的DAY可以省略

typedef enum
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
} DAY; // 此处的DAY为枚举类型enum DAY的别名

DAY today, tomorrow; // 变量today和tomorrow的类型为枚举型DAY,也即enum DAY

7.3 枚举类型的注意事项

1)第一个枚举成员的默认值为整数的0,后续的枚举成员的值是在前一个成员上加1。在当前值没有赋值的情况下,枚举类型的当前值总是前一个值+1;

枚举类型的遍历:枚举类型必须连续是可以实现有条件的遍历。

#include <stdio.h>

enum
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
} day;

int main()
{
    for (day = MON; day <= SUN; day++)
    {
        printf("枚举元素:%d\n", day);
    }
    return 0;
}

/* 输出结果:

枚举元素:1
枚举元素:2
枚举元素:3
枚举元素:4
枚举元素:5
枚举元素:6
枚举元素:7

*/

2)在定义枚举类型时,可以改变枚举类型的值;

#include <stdio.h>

enum DAY
{
    MON = 1, TUE, WED, THU = 10, FRI, SAT, SUN
};
 
int main()
{
    enum DAY day;
    day = THU;
    printf("%d",day);
    return 0;
}

/*
输出结果:
10
*/

3)可以将整数类型转换为对应的枚举类型;

#include <stdio.h>

 typedef enum DAY
{
    MON = 1, TUE, WED, THU, FRI, SAT, SUN
} DAY;

int main()
{
    DAY yesterday, today, tomorrow;
    yesterday = TUE;
    today = (DAY) (yesterday + 1);
    tomorrow = (DAY) 10;

    printf("%d, %d, %d\n", yesterday, today, tomorrow); // 输出: 2, 3, 10
    return 0;
}

4)switch中可以使用枚举类型。

#include <stdio.h>

enum SEASONS // 定义枚举类型 enum SEASONS
{
    SPRING = 1, SUMMER, AUTUMN, WINTER
};
enum SEASONS season; //定义一个枚举类型变量season(类型 enum SEASONS)

int main()
{
    printf("请输入你喜欢的季节:(1.spring, 2.summer, 3.autumn, 4.winter)\n");
    scanf("%d", &season);

    switch(season)
    {
        case SPRING:
            printf("你喜欢的季节是春天\n");
            break;
        case SUMMER:
            printf("你喜欢的季节是夏天\n");
            break;
        case AUTUMN:
            printf("你喜欢的季节是秋天\n");
            break;
        case WINTER:
            printf("你喜欢的季节是冬天\n");
            break;
        default:
            printf("你输入的有误\n");
            break;
    }

    return 0;
}

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值