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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Centos开启6379端口

    Centos开启6379端口查看zone名称[root@vm-centos-1data]#firewall-cmd–get-active-zones#显示publicinterfaces:ens33开启6379端口[root@vm-centos-1data]#firewall-cmd–zone=public–add-port=6379/tcp–permanent#显示…

    2022年5月22日
    80
  • sklearn linear regression_auto sklearn

    sklearn linear regression_auto sklearnK折交叉验证:sklearn.model_selection.KFold(n_splits=3,shuffle=False,random_state=None)思路:将训练/测试数据集划分n_splits个互斥子集,每次用其中一个子集当作验证集,剩下的n_splits-1个作为训练集,进行n_splits训练和测试,得到n_splits个结果注意点:对于不能均等份的数据集,其前n_sa

    2022年9月20日
    2
  • pycharm2021 激活码破解方法

    pycharm2021 激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    68
  • 国内比较好的OJ平台[通俗易懂]

    国内比较好的OJ平台[通俗易懂]OnlineJudge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。北京大学POJhttp://poj.org/中国最受欢迎OJ之一,各式各样各种难度的题目都有。杭州电子科技大学HDUOJhttp://acm.hdu.edu.cn/中国最受欢迎OJ之一,题目数量多,来源广。UVAht…

    2022年6月15日
    62
  • Vue双向绑定原理

    Vue双向绑定原理vue的双向绑定原理:vue数据的双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。其核心就是通过obj.defineProperty()方法来实现数据的劫持,在数据变化时发布消息给订阅者,触发相应的监听回调。也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;简单介绍一下Object.defineProperty()方法:1、Object.defineProperty(obj,prop,descriptor),这个语法内有三个参数,分别为obj(要定

    2022年10月18日
    4
  • nginx和keepalived实现nginx高可用_weblogic负载均衡

    nginx和keepalived实现nginx高可用_weblogic负载均衡一、Keepalived简要介绍Keepalived是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障的发生,通过配合Nginx可以实现web前端服务的高可用。Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA)。VRRP(VirtualRouterRedundancyProtocol)协议

    2025年8月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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