A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 令狐冲 中级黑马   /  2015-12-1 19:53  /  708 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、枚举类型
        如果一个变量只有几种可能的值,则可以定义为枚举(enumeration)类型, 所谓枚举就是值 把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。
        C语言 供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值, 被说明为该“枚举”类型的变量取值不能超过定义的范围。
        应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为 任何基本类型。
        枚举类型定义的一般形式为: enum 枚举类型名{ 枚举值表 };
        在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
        例如,该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取 值只能是七天中的某一天。 可以如此定义:
        enum WeekDay {sun,mon,tue,wed,thu,fri,sat};
        enum Wx {jin,mu,shui,huo,tu};
        enum Season {spring,summer,autumn,winter};

2、枚举类型变量
        如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明
        设有变量a、b、c被说明为上述的weekday。 可采用下述任一种方式:
        enum weekday{sun,mou,tue,wed,thu,fri,sat};
        enum weekday a,b,c; 或者为:
        enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
        或者为: enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

3、枚举类型变量的赋值和使用
        枚举类型在使用中有以下规定。
        1) 枚举值通常是固定不变的,不能对他进行修改(定义类型的时候可指定值)。 不能在程序中用赋值语句再对它赋值。 例如对枚举weekday的元素再作以下赋值: sun=5; mon=2; sun=mon; 都是错误的(标准语法不允许,但是有的xcode编译器允许修改,)。
         2) 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2...。 如在weekday中,sun值为0,mon值为1,...,sat值为6。
        3) 访问和使用 定义枚举变量: enum weekday day; 枚举变量的赋值:day = sun;///day只能赋值 枚举指定的值(xcode下赋值其他 的值也不报错, 编译器特性)

#include <stdio.h>
int main(int argc, const char * argv[]) {
//定义枚举类型
        enum weekday{sun,mou,tue,wed,thu,fri,sat};
        //定义枚举变量
        enum weekday day;
        //设定枚举变量的值
        day = wed;
        switch (day) {
        case sun:
                    printf("%d\t",sun);
                    break;
        case mou:
                printf("%d\t",mou);
                printf("星期一\n");
                break;
        case tue:
                printf("%d\t",tue);
                printf("星期二\n");
                break;
        case wed:
                printf("%d\t",wed);
                printf("星期三\n");
                break;
        case thu:
                 printf("%d\t",thu);
                printf("星期四\n");
                break;
        case fri:
                printf("%d\t",fri);
                printf("星期五\n");
                break;
        case sat:
                printf("%d\t",sat);
                printf("星期六\n");
                break;
        default:
                break;
        }
        return 0;
}

1 个回复

倒序浏览
很全面 感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马