• C中的枚举类型及一些用法


      在C中定义了一种特殊的数据类型:枚举。但这并不是C的首创,之前Pascal有,C之后的Java也有,但是C的枚举类型并不是那么的好用。今天在看视频的时候,翁恺老师正好在讲枚举,也就在此总结一下。

      枚举的好处在于它可以使一些数字符号化,然后增强程序的可读性。当然const double pi=3.14这种方法也可以达到这样的效果,但如果很多数字都需要这样的处理,那么枚举就很方便了。

      enum 枚举类型的名字{name0,name1…namen}

      这就是枚举的格式 ,注意枚举中的那些name之类的符号并不是真正意义上的符号,而是整形。如name0到namen,就是0-n-1.(当然我们也可以单独赋特定的值),所以输出和输入枚举类型的时候都需要按照整形来处理。

      如:

    #include <stdio.h>
    enum COLOR{red,green,blue};
    int main()
    {
        enum COLOR color;
        scanf("%d",&color);
        printf("%d",color);   //输入和输出仍然是整形数据,不能输入字符串。。。
        return 0;
    }
    #include <stdio.h>
    enum COLOR{red,green,blue};
    void fun(enum COLOR color)
    {
        printf("%d",color);
    }
    int main()
    {
        enum COLOR color=red;
        fun(color);
        return 0;
    }

    永远记住C语言中枚举仍然是按照整形变量来处理的,自然包括输入和输出。

    同时枚举类型中可以有一个自动计数的小套路,当我们没有给name0-namen赋值的时候,它的值是0-n-1。所以我们可以用一个无意义叫做Nums的东西放到枚举变量中的最后,用来统计这个枚举变量中一共有多少个量(当然是指有意义的)。

    如:

    enum COLOR{red,green,blue,Nums};

    通过这种方式,也可以运用到for循环等语句结构中。

    但我们需要小心的是,如果直接赋一个整形的数据给枚举变量,现在的编译器是不会报错的。但这样的后果也就会导致我们可能得到了一个没有实际意义的结果。因为枚举本身就是为了方便阅读程序。

    #include <stdio.h>
    enum COLOR{red=1,green,blue};
    void fun(enum COLOR color)
    {
        printf("%d
    ",color);
    }
    int main()
    {
        enum COLOR color=red;
        enum COLOR color2=0;
        fun(color);
        fun(color2);
        return 0;
    }

    如,这里0在COLOR中并没有意义,但是还是会输出一个0。

  • 相关阅读:
    使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000)(ZT)
    Winform中消息循环、异步操作、Control.Invoke&Control.BeginInvoke学习
    SQL字符串的分组聚合(ZT)
    一次项目维护案例而对事务学习的笔记
    NOIP2011提高组 选择客栈
    NOIP2012提高组 Day 2 Problem 2 借教室
    201793模拟赛T2 取数(win)
    201793模拟赛T1 卡片(card)
    01Dart 变量常量
    01TypeScript 基础类型
  • 原文地址:https://www.cnblogs.com/kugwzk/p/5048439.html
Copyright © 2020-2023  润新知