当前位置: 首页 > news >正文

【C语言】自定义类型------枚举类型

1、枚举类型

枚举类型的关键字是:enum

枚举顾名思义就是一 一列举。

把可能的取值一  一列举。

比如,比如我们现实生活中,一周的星期一到星期日是有限的的7天,可以一 一列举。三原色(红、蓝、绿)也是可以一一列举。

性别:男、女、保密,也可以一一列举。

例如:

enum   Color//颜色

{

RED,

GREEN,

BLUE

};

enum   Sex//性别

{

MALE,

FEMALE,

SECRET

};

以上定义的:enum   Color,   enum   Sex都是枚举类型。{}中的内容是枚举类型的可能取值,也叫枚举常量。

这些可能取值都是有值的,默认从0开始,一次递增1,当然在声明枚举类型的时候也可以赋初值。

例如:

enum   Color//颜色

{

RED=2,

GREEN=4,

BLUE=6

};

代码示例:

源代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
enum Color
{
    RED,
    GREEN,
    BLUE
};
int main()
{
    printf("%d\n", RED);
    printf("%d\n", GREEN);
    printf("%d\n", BLUE);

    return 0;
}

注意:

2、枚举类型的优点

为什么使用枚举?

我们可以使用#define定义常量,为什么非要使用枚举?

枚举的优点:

(1)增加代码的可读性和可维护性

(2)和#define定义的标识符相比,枚举有类型检查,更加严谨

(3)便于调试,预处理阶段会删除#define定义的符号

(4)使用方便,一次可以定义多个常量

(5)枚举常量是遵循作用域规则的。枚举声明在函数内,只能在函数内使用。

增加代码的可读性:

例如:

代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
enum   option
{
    EXIT,//退出程序
    ADD,//加法
    SUB,//减法
    MUL,//乘法
    DIV//除法
};
int  main()
{
    int x = 0;
    int y = 0;
    scanf("%d %d", &x, &y);
    printf("****  0  退出程序    1  加法\n");
    printf("****  2  减法       3  乘法\n");
    printf("****         4  除法\n");
    int n = 0;
    printf("请输入选项:");
    scanf("%d", &n);
    switch (n)
    {
    case EXIT:
        break;
    case ADD:
        printf("%d\n", x + y);
        break;
    case SUB:
        printf("%d\n", x - y);
        break;
    case  MUL:
        printf("%d\n", x * y);
        break;
    case DIV:
        if (y ==0 )
        {
            printf("y不能为0");
            break;
        }
        printf("%d\n", x / y);
        break;
    default:
        printf("输入错误");
    }
    return 0;
}

3、枚举类型的使用

在C语言中,也可以拿整数给枚举变量赋值。但是在C++中是不行的,C++的类型检查比较严格。

例如:


http://www.mrgr.cn/news/56084.html

相关文章:

  • conda 容器学习笔记之一 -- 基础环境配置
  • java枚举值的灵活应用
  • Qt调用Yolov11导出的Onnx分类模型开发分类检测软件
  • Docker 详解与入门案例
  • YoloV10——专栏目录
  • 配置文件get调用为null
  • win11环境下成功安装mamba
  • vscode ai代码补全插件 tab键接受失效
  • 上传代码到云效
  • QT界面开发--我的第一个windows窗体【菜单栏、工具栏、状态栏、铆接部件、文本编辑器、按钮、主界面】
  • 前端工程反思笔记:从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞- 统计下你的项目有多少个依赖吧!
  • UI Manifold 概览
  • 【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024)
  • 安卓开发例程之计算器项目
  • springboot 同时上传文件和JSON对象
  • RHCE--nginx实现多IP访问多网站
  • 一文搞定栈与队列
  • [AOSPXRef]看安卓源码搜索使用解释
  • 设置虚拟机与windows间的共享文件夹
  • 每日一题|1497. 检查数组对是否可以被 k 整除|两数之和的模运算
  • 在分类内用最大最小值筛选(每个分类找出一个)
  • 振弦式传感器在高边坡监测中发挥哪些优势?
  • 文心一言 VS 讯飞星火 VS chatgpt (375)-- 算法导论24.4 7题
  • WPS电信定制版 v12.8.2.18205 自带 VBA\无广告
  • 【Linux】进程优先级
  • 大模型LLM算法工程师技术面试指南