C语言_0328笔记_枚举:常量符号化/int值/自定义枚举量/自动枚举计数/不怎么常用

目录

常量符号化

枚举

概念解释

程序例子

小套路:自动计数的枚举

枚举量


枚举的意义:

  • 1.常量 int 名字 值(0 1 2 3)
  • 当我们需要一些排列起来的常量值,定义枚举的意义就是赋予常量值名字

常量符号化

  • 在程序中我们经常避免直接出现数字,用具体的单词或者别的能表达意思的字符串代替,这样可以大幅提升可读性。
  • 比如用单词代替数字

枚举

概念解释

  • 枚举是一种用户定义的数据类型,它用关键字enum来声明,定义枚举是给一些常量赋名:enum 枚举名 {名字0,名字1,...,名字n}; 也可以指定值(枚举量)
  • 使用时大多会将枚举名省去,因为它并不真的使用,括号内的名字才更加重要
  • 括号内实际上是常量符号,类型是int,值依次从0到n递增

程序例子

#include <stdio. h>
enum color { red, yellow, green};
 
//枚举类型要跟上enum,无论是函数的参数表里还是变量里(C语言中规定)
//这里是函数参数表
void f(enum color c);
 
 
int main(void)
{
//枚举量可以作为值
    enum color t = red;
 
//实际上,red就是0,C语言内部以整数来处理它
    scanf("%d", &t);
    f(t);
    return 0;
}
void f(enum color c)
{
    printf("%d\n",c);
}

输入 输出/ 2 2/  3 3/  55 55

  • 枚举量可以作为值
  • 枚举类型可以跟上enum作为类型
  • 但实际上是以整数来做内部计算和外部输出的

小套路:自动计数的枚举

  • 枚举内部计数规则和数组一样,从0开始计数,因此如果在元素最后加一个名字,这个名字代表的数字就是前面名字的计数量
  • 比如   enum color { red, yellow, green,NumColors};  //NumColors代表3,前面正好3个元素
  • 此时如果需要遍历所有枚举量、或者需要建立用枚举量做下标的数组时,就可以轻松得知枚举量的个数。 
    #include <stdio.h>
    enum COLOR {RED,YELLOW, GREEN, NumCOLORS};
     
    int main(int argc, char const *argv[])
    {
        int color = -1;
    //可以用NumColors建立数组
        char *ColorNames [NumCOLORS] = {
        "red", "yellow", "green",
        };
        char *colorName = NULL;
     
        printf("输入你喜欢的颜色的代码: ");
        scanf("%d", &color);
    //可以用NumColors作为判断依据
        if ( color >=0 && color < NumCOLORS ) {
        colorName = ColorNames [color] ;
        } else {
        colorName= "unknown" ;
        }
     
        printf ("你喜欢的颜色是%s\n",colorName);
        return 0;
    }

    char *ColorNames [NumCOLORS] = {
        "red", "yellow", "green", };

字符串数组

 

枚举量

  • 在声明枚举量的时候可以不按默认原则,自定义值

enum COLOR {RED=1,YELLOW, GREEN=5 };
//此时yellow=2

  •  枚举量只是int类型(但是给枚举量赋超过int的整数也不会报错,或者0)
  • 虽然枚举类型可以当成类型使用,但不好用。。。
  • 意义上有排比的名字,用枚举比const int方便,不用一行一行写
  • 枚举比宏(macro)好,因为枚举有int类型,宏没有类型
  • 枚举的主要用途就是拿来定义一些符号量,而不是当一种类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值