自学内容网 自学内容网

67.【C语言】枚举类型

1.定义

对于有限的情况,一一列举

如一周有7天,从周一到周日;光学三原色(Red Green Blue)

2.格式

enum  枚举类型名
{
  //枚举常量
};

备注:enum为enumeration缩写

3.枚举成员变量的值

#include <stdio.h>
enum color
{
    Red,
    Green,
    Blue
};

int main()
{
    printf("%d,%d,%d", Red, Green, Blue);
    return 0;
}

 

默认情况下,从上至下,枚举常量的取值依次为0,1,2,3,4,其值不可修改,但可以赋初值

枚举常量的值不可修改

写成下面这样会报错

int main()
{
    Red = 2;
    printf("%d,%d,%d", Red, Green, Blue);
    return 0;
}

赋初值的示例

#include <stdio.h>
enum color
{
    Red=3,
    Green,
    Blue
};

int main()
{
    printf("%d,%d,%d", Red, Green, Blue);
    return 0;
}

#include <stdio.h>
enum color
{
    Red,
    Green=3,
    Blue
};

int main()
{
    printf("%d,%d,%d", Red, Green, Blue);
    return 0;
}

从上方的两段代码可以发现:成员变量的值从一开始赋初值的位置开始递增

4.优点

5条优点

1.增加代码的可读性和可维护性

2. 和#define定义的标识符比较,枚举有类型检查(检查是否为枚举类型),更加严谨

#define Red 0这样的定义,Red是没有类型的

3. 便于调试,预处理阶段会删除#define定义的符号

4. 使用方便,一次可以定义多个常量(逗号隔开定义)

5. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用

#define Red 0这样的定义是全局的

补充说明:类型检查

下列代码保存为*,cpp运行

enum Color
{
    Red,
    Green, 
    Blue
};

int main()
{
    enum Color Col = 0;
    return 0;
}

Col = 0;的0默认为int类型,而Col为枚举类型,因此不行

但在C语言编译器不会报错,原因是C语言的类型检查不严谨

如果改成

enum Color Col = Red;

则没有问题


原文地址:https://blog.csdn.net/2401_85828611/article/details/142661164

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!