c语言枚举类型enum例子_枚举是什么意思

c语言枚举类型enum例子_枚举是什么意思在实际的编程应用中,有的变量只有几种可能的取值,譬如说一个星期的七种可能,性别的两种可能等等。C语言为这种类型的变量的定义提供了enum关键字。要使用枚举类型的变量,首先需要先定义一个枚举类型名,然后再声明该变量是枚举类型的例如:enumweekday{\\该语句定义了一个`枚举类型`MONDAY,TUSEDAY,WEDNESDAY,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在实际的编程应用中,有的变量只有几种可能的取值,譬如说一个星期的七种可能,性别的两种可能等等。C语言为这种类型的变量的定义提供了enum关键字

要使用枚举类型的变量,首先需要先定义一个枚举类型名,然后再声明该变量是枚举类型的


例1:

enum WEEKDAY{   \\该语句定义了一个枚举类型
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

enum WEEKDAY day;   \\该语句声明了一个枚举类型的变量

Jetbrains全家桶1年46,售后保障稳定

上述例子中的MONDAY、TUSEDAY等称为枚举元素枚举常量(本人更倾向于称其为枚举常量,因为这样可以反映其性质),它们是用户自定义的标识符而已。

没有显式说明的情况下,枚举类型中的第一个枚举常量的值为0,第二个为1,以此类推。如果只指定了部分枚举常量的值,那么未指定值的枚举常量的值将依着最后一个指定值向后递增(步长为1)

不同枚举类型中的枚举常量的名字必须互不相同。同一枚举类型中的不同的枚举常量可以具有相同的值

枚举类型为建立常量值与标识符之间的关联提供了一种便利的方式。相对于#define语句来说,它的优势在于常量值可以自动生成

尽管可以声明枚举类型的变量,但编译器不检查这种类型变量中存储的值是否为该枚举类型中的有效值,不过,枚举类型的变量提供这种检查

注意:

  • 不能对枚举常量进行赋值操作(定义枚举类型时除外)
  • 枚举常量和枚举变量可以用于判断语句,实际用于判断的是其中实际包含的值
  • 一个整数不能直接赋值给一个枚举变量,必须用该枚举变量所属的枚举类型进行类型强制转换才行
  • 使用常规的手段输出无法输出枚举常量所对应的字符串,因为枚举常量为整型值
  • 在使用枚举变量的时候,我们不关心其值的大小,而是其表示的状态

例2:

enum WEEKDAY{
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

注意点:

  • 枚举常量之间用逗号隔开,最后一个枚举常量之后不需要逗号
  • 整个枚举类型定义语句的最后需要一个分号
  • WEEKDAY是该枚举类型的名字,这是一个可选项

1、定义枚举类型后声明枚举变量

enum WEEKDAY{
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

int main(int argc, char ** argv)
{
    enum WEEKDAY day;
    day = MONDYA;

    return 0;
}
2、定义枚举类型的同时声明枚举变量

enum WEEKDAY{
    MONDAY= 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}day;

int main(int argc, char ** argv)
{
    day = MONDYA;

    return 0;
}
3、定义枚举类型的同时利用typedef关键字将其声明为类型别名,然后利用该类型别名声明枚举类型变量

typedef enum WEEKDAY{
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}WEEKDAYS;

int main(int argc, char ** argv)
{
    WEEKDAYS day = MONDYA;

    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200914.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 操作系统中 heap 和 stack 的区别

    操作系统中 heap 和 stack 的区别 操作系统中 heap 和 stack 的区别(2016年腾讯校招笔试)概念:   堆栈是两种数据结构,是一种数据项按序排列的数据结构,只能在一端进行插入和删除操作。堆为队列优先,先进先出(FIFO)。栈为先进后出(FILO)。区别:一、空间区别:    1.堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。PS:java中都是…

  • Python删除文件中重复的内容「建议收藏」

    Python删除文件中重复的内容「建议收藏」1.背景:在将多个文件进行合并时,存在一个问题是许多文件中含有相同的内容,但是希望合并后的文件内容具有唯一性,即文件中的数据唯一,不会有重复的情况  #txt1内容为: #txt2内容为: #希望合并后的文件内容为: 123 234 456 123 254 456 …

  • 最长回文子串——马拉车算法详解

    最长回文子串——马拉车算法详解马拉车算法(Manacher‘sAlgorithm)是用来解决求取一个字符串的最长回文子串问题的。此算法充分利用了回文字符串的性质,将算法复杂度降到了线性,非常值得一学。我将网上所有讲解马拉车算法的文章基本看了一遍,总结出了最通俗易懂的介绍,同时用python进行了实现。题目给定一个字符串s,找到s中最长的回文子字符串。所谓回文字符串,指的是无论从左往右读还是从右往左读,…

  • Pytest(15)pytest分布式执行用例「建议收藏」

    Pytest(15)pytest分布式执行用例「建议收藏」前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

  • mysql左连接多个表_mysql可以创建多少张表

    mysql左连接多个表_mysql可以创建多少张表A表:姓名,学号,班级编号B表:学号,成绩C表:班级编号,班级名称最后想显示为姓名,学号,成绩,班级名称A、B表用wherea.学号=b.学号查出之后再和C表左连接sql语句如下:selecta.姓名,a.学号,b.成绩,c.班级名称fromA表aleftjoinB表bona.学号=b.学号leftjoinC表cona.班级编号=c.班级编号…

  • 从零开始学android编程之网格布局管理器(2-1)

    从零开始学android编程之网格布局管理器(2-1)网格布局管理器用GridLayout类来表示。在《从零开始学android编程之表格布局管理器》中提到的TableLayout一般产生的表格外形是标准的方框,而GridLayout类产生的网格可以是不标准的。1设置网格的行数和列数在《从零开始学android编程之线性布局管理器》中提到的activity_linear.xml文件中使用表格布局管理器GridLayout,代码如下Lin

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号