商业资料C语言枚举类型详解

上传人:洪易 文档编号:40530131 上传时间:2018-05-26 格式:DOC 页数:10 大小:41.50KB
返回 下载 相关 举报
商业资料C语言枚举类型详解_第1页
第1页 / 共10页
商业资料C语言枚举类型详解_第2页
第2页 / 共10页
商业资料C语言枚举类型详解_第3页
第3页 / 共10页
商业资料C语言枚举类型详解_第4页
第4页 / 共10页
商业资料C语言枚举类型详解_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《商业资料C语言枚举类型详解》由会员分享,可在线阅读,更多相关《商业资料C语言枚举类型详解(10页珍藏版)》请在金锄头文库上搜索。

1、A thesis submitted toin partial fulfillment of the requirementfor the degree ofMaster of EngineeringC 语言详解 - 枚举类型注:以下全部代码的执行环境为 VC+ 6.0在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define 来完成这 项工作,您的代码可能是:#define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6 #define SUN 7 在此,我们定义一种新

2、的数据类型,希望它能完成同样的工作。这种新的数据类型叫枚举 型。1. 定义一种新的数据类型 - 枚举型以下代码定义了这种新的数据类型 - 枚举型enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ; (1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔 开。(2) DAY 是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。(3) 第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5) 枚举型是预处理指令#defi

3、ne 的替代。(6) 类型定义以分号;结束。2. 使用枚举类型对变量进行声明新的数据类型定义完成后,它就可以使用了。我们已经见过最基本的数据类型,如:整型 int, 单精度浮点型 float, 双精度浮点型 double, 字符型 char, 短整型 short 等等。用这些基 本数据类型声明变量通常是这样:char a; /变量 a 的类型均为字符型 char char letter; int x,y,z; /变量 x,y 和 z 的类型均为整型 int int number; double m, n; double result; /变量 result 的类型为双精度浮点型 double

4、既然枚举也是一种数据类型,那么它和基本数据类型一样也可以对变量进行声明。方法一:枚举类型的定义和变量的声明分开enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ; enum DAY yesterday; enum DAY today; enum DAY tomorrow; /变量 tomorrow 的类型为枚举型 enum DAY enum DAY good_day, bad_day; /变量 good_day 和 bad_day 的类型均为枚举型 enum DAY 方法二:类型定义与变量声明同时进行:enum /跟第一个定义不同的是,此处的标号 DAY

5、 省略,这是允许的。 saturday,sunday = 0,monday,tuesday,wednesday,thursday,friday workday; /变量 workday 的类型为枚举型 enum DAYenum week Mon=1, Tue, Wed, Thu, Fri Sat, Sun days; /变量 days 的类型为枚举型 enum week enum BOOLEAN false, true end_flag, match_flag; /定义枚举类型并声明了两个枚举型变 量 方法三:用 typedef 关键字将枚举类型定义成别名,并利用该别名进行变量声明:typed

6、ef enum workday saturday,sunday = 0,monday,tuesday,wednesday,thursday,friday workday; /此处的 workday 为枚举型 enum workday 的别名 workday today, tomorrow; /变量 today 和 tomorrow 的类型为枚举型 workday,也即 enum workday enum workday 中的 workday 可以省略:typedef enum saturday,sunday = 0,monday,tuesday,wednesday,thursday,frida

7、y workday; /此处的 workday 为枚举型 enum workday 的别名workday today, tomorrow; /变量 today 和 tomorrow 的类型为枚举型 workday,也即 enum workday 也可以用这种方式:typedef enum workday saturday,sunday = 0,monday,tuesday,wednesday,thursday,friday;workday today, tomorrow; /变量 today 和 tomorrow 的类型为枚举型 workday,也即 enum workday 注意:同一个程序

8、中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的命名 常量。错误示例如下所示:错误声明一:存在同名的枚举类型typedef enum wednesday,thursday,friday workday;typedef enum WEEK saturday,sunday = 0,monday, workday;错误声明二:存在同名的枚举成员typedef enum wednesday,thursday,friday workday_1;typedef enum WEEK wednesday,sunday = 0,monday, workday_2;3. 使用枚举类型的变量3.1 对枚举

9、型的变量赋值。实例将枚举类型的赋值与基本数据类型的赋值进行了对比:方法一:先声明变量,再对变量赋值#include/* 定义枚举类型 */ enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本数据类型声明变量,然后对变量赋值 */int x, y, z;x = 10;y = 20;z = 30;/* 使用枚举类型声明变量,再对枚举型变量赋值 */enum DAY yesterday, today, tomorrow;yesterday = MON;today = TUE;tomorrow = WED;printf(“

10、%d %d %d n“, yesterday, today, tomorrow); 方法二:声明变量的同时赋初值#include /* 定义枚举类型 */ enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本数据类型声明变量同时对变量赋初值 */int x=10, y=20, z=30;/* 使用枚举类型声明变量同时对枚举型变量赋初值 */enum DAY yesterday = MON, today = TUE,tomorrow = WED;printf(“%d %d %d n“, yesterday, today

11、, tomorrow); 方法三:定义类型的同时声明变量,然后对变量赋值。#include /* 定义枚举类型,同时声明该类型的三个变量,它们都为全局变量 */ enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday, today, tomorrow;/* 定义三个具有基本数据类型的变量,它们都为全局变量 */ int x, y, z;void main() /* 对基本数据类型的变量赋值 */x = 10; y = 20; z = 30;/* 对枚举型的变量赋值 */yesterday = MON;today = TUE;tomorrow

12、 = WED;printf(“%d %d %d n“, x, y, z); /输出:10 20 30printf(“%d %d %d n“, yesterday, today, tomorrow); /输出:1 2 3 方法四:类型定义,变量声明,赋初值同时进行。#include /* 定义枚举类型,同时声明该类型的三个变量,并赋初值。它们都为全局变量 */ enum DAY MON=1, TUE,WED,THU,FRI,SAT,SUN yesterday = MON, today = TUE, tomorrow = WED;/* 定义三个具有基本数据类型的变量,并赋初值。它们都为全局变量 *

13、/ int x = 10, y = 20, z = 30;void main() printf(“%d %d %d n“, x, y, z); /输出:10 20 30printf(“%d %d %d n“, yesterday, today, tomorrow); /输出:1 2 3 3.2 对枚举型的变量赋整数值时,需要进行类型转换。#include enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() enum DAY yesterday, today, tomorrow;yesterday = TUE;today = (en

14、um DAY) (yesterday + 1); /类型转换tomorrow = (enum DAY) 30; /类型转换/tomorrow = 3; /错误printf(“%d %d %d n“, yesterday, today, tomorrow); /输出:2 3 30 3.3 使用枚举型变量#includeenum BELL = a,BACKSPACE = b,HTAB = t,RETURN = r,NEWLINE = n, VTAB = v,SPACE = ;enum BOOLEAN FALSE = 0, TRUE match_flag;void main() int index

15、= 0;int count_of_letter = 0;int count_of_space = 0;char str = “Im Ely efod“;match_flag = FALSE;for(; strindex != 0; index+)if( SPACE != strindex )count_of_letter+;elsematch_flag = (enum BOOLEAN) 1;count_of_space+;printf(“%s %d times %c“, match_flag ? “match“ : “not match“, count_of_space, NEWLINE);printf(“count of letters: %d %c%c“, count_of_letter, NEWLINE, RETURN); 输出: match 2 times count of letters: 10 Press any key to continue4. 枚举类型与 sizeof 运算符#include enum escapes BELL = a,BACKSPACE = b,HTAB = t,RETURN = r,NEWLINE = n, VT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号