C enum(枚举)

下面详细讲解一下C语言中枚举(enum)的完整使用攻略。

枚举的定义

C语言中的枚举是一种用户自定义的数据类型,它允许我们定义一组命名的常量。枚举常量被称为枚举值(enum value)。

在C语言中枚举的定义格式为:

enum 枚举类型名{
    枚举值1,
    枚举值2,
    ……
    枚举值n
};

其中,枚举类型名是一个标识符,它是这个枚举类型的名称;枚举值是一组常量,多个枚举值之间用逗号隔开。

举个例子:

enum Weekday{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

在这个例子中,我们定义了一个枚举类型Weekday,它包括七个枚举值,分别为Monday、Tuesday、Wednesday、Thursday、Friday、Saturday和Sunday。其中Monday的枚举值为0,Tuesday的枚举值为1,以此类推,Sunday的枚举值为6。

枚举的使用

我们可以使用枚举类型定义变量,也可以直接使用枚举值。枚举变量的定义格式为:

enum 枚举类型名 枚举变量名;

例如,我们可以这样定义一个Weekday类型的变量:

enum Weekday today;

我们也可以直接使用枚举值,如:

printf("Today is %dth day of the week.\n", Tuesday);

当然,我们也可以将枚举值赋值给枚举变量:

today = Monday;

在使用枚举类型定义函数参数时,通常需要先定义一个枚举类型的别名,例如:

typedef enum Weekday{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}WeekdayType;

这样定义之后,我们就可以使用WeekdayType作为函数参数的类型了:

void PrintWeekday(WeekdayType day){
    switch(day){
        case Monday:
            printf("Today is Monday.\n");
            break;
        case Tuesday:
            printf("Today is Tuesday.\n");
            break;
        case Wednesday:
            printf("Today is Wednesday.\n");
            break;
        case Thursday:
            printf("Today is Thursday.\n");
            break;
        case Friday:
            printf("Today is Friday.\n");
            break;
        case Saturday:
            printf("Today is Saturday.\n");
            break;
        case Sunday:
            printf("Today is Sunday.\n");
            break;
        default:
            printf("Invalid input.\n");
    }
}

在这个例子中,我们定义了一个PrintWeekday函数,它的参数是一个WeekdayType类型的变量day。使用switch语句判断day是哪一天,并输出对应的字符串。

示例说明

下面给出两个示例说明枚举的使用。

示例一

#include <stdio.h>

enum Color{
    Red,
    Green,
    Blue
};

int main(){
    enum Color color = Red;

    printf("The color is %d.\n", color);

    color = 1; //将Green的枚举值1赋值给color
    printf("The color is %d.\n", color);

    return 0;
}

在这个示例中,我们定义了一个Color枚举类型,其中包括了三种颜色Red、Green和Blue。我们首先将color赋值为Red枚举值(默认值为0),输出color的值为0。然后将Green的枚举值1赋值给color,输出color的值为1。

示例二

#include <stdio.h>

typedef enum Gender{
    Male,
    Female
}GenderType;

void PrintGender(GenderType gender){
    if(gender == Male){
        printf("The gender is male.\n");
    }
    else if(gender == Female){
        printf("The gender is female.\n");
    }
    else{
        printf("Invalid input.\n");
    }
}

int main(){
    GenderType gender = Female;

    PrintGender(gender);

    return 0;
}

在这个示例中,我们先使用typedef定义了一个GenderType类型,它是一个枚举类型。然后定义了一个PrintGender函数,它的参数是一个GenderType类型的变量gender。函数判断gender是男性还是女性,并输出对应的字符串。最后在主函数中定义了一个gender变量为Female枚举值,调用PrintGender函数输出“The gender is female.”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C enum(枚举) - Python技术站

(0)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • c#操作json示例分享

    下面我将为你详细讲解如何使用C#操作JSON。 首先,我们需要了解C#中的JSON库。C#自带了一个System.Text.Json的库,它能够实现将JSON字符串转换为C#对象以及将C#对象转换为JSON字符串,而且相比其他的JSON库,它的性能更加出色。 下面是一些常用的操作: 将JSON字符串转换为C#对象 使用System.Text.Json库将JS…

    C 2023年5月23日
    00
  • 逍遥自在学C语言 | 逻辑运算符

    前言 一、人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 二、构成和表示方式 逻辑运算符是用来比较和操作布尔值的运算符 C语言中的逻辑运算符主要有3个,如下表所示 运算符 名称 示例 描述 && 与 a && b 当a和b都为真时,返回真 || …

    C语言 2023年4月17日
    00
  • spring循环注入异常问题的解决方案

    以下是关于“Spring循环注入异常问题的解决方案”的完整攻略,分为三个部分: 问题分析 在使用Spring框架进行依赖注入的时候,很容易遇到循环依赖的问题,比如A类依赖于B类,而B类又依赖于A类,这种情况下就会出现循环依赖的问题。Spring框架默认是不支持循环依赖的,在出现循环依赖的情况下,Spring会抛出BeanCurrentlyInCreation…

    C 2023年5月23日
    00
  • C语言实现飞机大战小游戏

    C语言实现飞机大战小游戏完整攻略 简介 飞机大战是一款经典的小游戏,它的玩法简单却精巧,是C语言初学者不错的练手项目。本文将详细介绍如何用C语言实现飞机大战小游戏。 准备工作 在开始编写游戏代码前,我们需要做一些准备工作: 安装开发环境(比如 Visual Studio Code,CodeBlocks 等等); 了解游戏窗口、控件绘制、键盘事件等基础知识。 …

    C 2023年5月22日
    00
  • C++控制台绘图头文件实例代码

    下面是对“C++控制台绘图头文件实例代码”的完整攻略: 1. 简介 在C++的控制台程序中,通过使用图形化绘图头文件,可以在控制台中绘制出各种图形。 2. 下载 在使用绘图头文件前,需要下载对应的库文件。 目前比较流行的库包括: graphics.h:Borland C++ 5.02自带的,不建议使用。 conio.h:Turbo C自带的,也不建议使用。 …

    C 2023年5月24日
    00
  • 详解javascript对数组和json数组的操作

    下面是详解 JavaScript 对数组和 JSON 数组的操作的完整攻略。 JavaScript 数组操作 声明和初始化数组 JavaScript 中声明和初始化一个数组可以使用以下方式: // 声明空数组 var arr = []; // 声明同时初始化数组 var arr = [1, 2, 3]; // 使用 Array 构造函数声明和初始化数组 va…

    C 2023年5月23日
    00
  • C语言 二叉查找树性质详解及实例代码

    C语言二叉查找树性质详解及实例代码 什么是二叉查找树? 二叉查找树,也称二叉搜索树,它是一种基于对比的动态数据结构。它的定义如下: 每个节点都包含一个键值,且键值唯一; 每个节点的左子树只包含小于当前节点的节点; 每个节点的右子树只包含大于当前节点的节点; 左右子树都是二叉搜索树; 二叉查找树的性质 二叉查找树的性质体现在它的增、删、查等操作中,具体有以下几…

    C 2023年5月24日
    00
  • C++中volatile关键字及常见的误解总结

    C++中volatile关键字及常见的误解总结 什么是volatile关键字 volatile 是一个类型修饰符,用于告诉编译器,该变量可能在程序执行阶段被不由程序本身产生的修改。 通俗点讲,当我们定义一个变量时,系统会在内存中为其分配一块内存区域,我们通过对这些内存的读写来操作这些变量。但是在复杂的多线程并发编程中,可能出现另外一个线程或者硬件设备修改了这…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部