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

揭开枚举类的面纱(Unlocking the Enumeration/enum Mystery)

枚举给用户定义固定数据组提供了方便。枚举类就是一系列常量整型值,这也就意味着枚举类型不能被修改。

这里我们将要讨论C语言中枚举类型的用法和限制。

枚举通过枚举关键值定义,类似结构体定义

语法(Syntax):

enum tagname{CONST1=1,CONST2,…} enumVariable;

tagname枚举类型名,这一项可以省略。

{CONST1=1,CONST2,…}一组代替常量值的字符串,每个字符串对应一个整型数据,整形数据从0开始,第二个是1,等等。除非使用者自己定义类如CONST1=1,否则,字符串的序号就是字符串对应的整形值。如果用户自己指定字符串对应的整型值,那它后面的字符串所对应的整形值就是跟着前面的连续值。说起来不清楚,举个例子,CONST2=6,这个元素后面的元素的值就是相应的7,8,9等等。

enumVariable,枚举类型的变量列表。枚举类型的变量是整型的,除了枚举常量,这些变量可以被赋值任何整型数据。这个定义也是可选的,像结构体一样的,也可以在后面程序中定义:

enum tagname enumVariable;

下面是枚举类型使用范例:

#include <stdio.h>
 
//Defining the enum
enum week
{
MONDAY= -1,TUESDAY,WEDNESDAY,THURSDAY=6,FRIDAY,SATURDAY,SUNDAY
};
 
int main(void)
{
    //Declaring an enum in the program
    enum week day=FRIDAY;
     
    switch(day)
    {
        case MONDAY:
        printf("Monday Sucks");
        break;
         
        case SATURDAY:
        printf("Weekends are fun");
        break;
         
        case SUNDAY:
        printf("Weekends are fun");
        break;
         
        default:
        printf("It depends on the mood :D %d",day);
        break;
    }
     
    return 0;
}

转载于:https://www.cnblogs.com/programnote/p/4727795.html

相关文章:

  • 盒模型一二三(一):盒世界,知几何
  • 利用工厂模式实现Dao层和Service的解耦
  • [LeetCode]Multiply Strings
  • 11g rac配置scan ip
  • jQuery属性,方法操作
  • 深入理解Linux内核-信号
  • 1.1JVM
  • 十进制转二进制
  • Android 工作随记
  • CRB and String
  • CoCoaPods
  • Nova 操作汇总(限 libvirt 虚机) [Nova Operations Summary]
  • Hexo 个人博客搭建
  • 2.4-Apache访问控制
  • Excel文档上传
  • @angular/forms 源码解析之双向绑定
  • FastReport在线报表设计器工作原理
  • HTTP 简介
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java 23种设计模式 之单例模式 7种实现方式
  • java多线程
  • PAT A1092
  • Puppeteer:浏览器控制器
  • webpack入门学习手记(二)
  • 初探 Vue 生命周期和钩子函数
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 力扣(LeetCode)56
  • 使用agvtool更改app version/build
  • 数据可视化之 Sankey 桑基图的实现
  • 新版博客前端前瞻
  • 云大使推广中的常见热门问题
  • 终端用户监控:真实用户监控还是模拟监控?
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 我们雇佣了一只大猴子...
  • #{}和${}的区别?
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1)无线电失控保护(二)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (libusb) usb口自动刷新
  • (TOJ2804)Even? Odd?
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (安卓)跳转应用市场APP详情页的方式
  • (二)WCF的Binding模型
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (推荐)叮当——中文语音对话机器人
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转载)深入super,看Python如何解决钻石继承难题
  • .bashrc在哪里,alias妙用
  • .Family_物联网
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET 表达式计算:Expression Evaluator