C程序设计C程序设计 (86).pdf
《C程序设计C程序设计 (86).pdf》由会员分享,可在线阅读,更多相关《C程序设计C程序设计 (86).pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C C程序设计程序设计Programming in CProgramming in C编程使用复杂数据编程使用复杂数据3、枚举数据类型4、位域数据类型C C程序设计程序设计程序设计程序设计3 38.7 8.7 枚举类型枚举类型枚举类型是C语言的一种构造类型。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。4 48.7.1 8.7.1 枚举类型的声明枚举类型的声明枚举类型是由用户自定义的由多个命名枚举常量构成的类型,其声明形式为:enumenumerate,枚举,列举enum 枚举类型名enum 枚举类型名 命名枚举常量列表命名枚举常量列表;5 58.7.1 8.
2、7.1 枚举类型的声明枚举类型的声明示例enum tagDAYS是枚举类型,MON等是命名枚举常量。默认时枚举常量总是从0开始,后续的枚举常量总是前一个的枚举常量加一。如MON为0,TUE为1,SUN为6。enumenum tagDAYStagDAYS MONMON,TUETUE,WEDWED,THUTHU,FRIFRI,SATSAT,SUNSUN;6 68.7.1 8.7.1 枚举类型的声明枚举类型的声明可以在(仅仅在)声明枚举类型时,为命名枚举常量指定值。例如:则RED为10、GREEN为8、BLUE为9、BLACK为10、WHITE为11。enumenum tagCOLORStagCOL
3、ORS REDRED=1010,GREENGREEN=8 8,BLUEBLUE,BLACKBLACK,WHITEWHITE;7 78.7.1 8.7.1 枚举类型的声明枚举类型的声明命名枚举常量是一个整型常量值,也称为枚举器(enumerator),在枚举类型范围内必须是唯一的。命名枚举常量是右值不是左值,例如:REDRED=1010;/错误,RED不是左值,不能被赋值/错误,RED不是左值,不能被赋值GREENGREEN+;+;/错误,GREEN不是左值,不能自增自减/错误,GREEN不是左值,不能自增自减8 88.7.2 8.7.2 枚举类型对象枚举类型对象定义枚举类型对象有三种形式:en
4、um 枚举类型名enum 枚举类型名 命名枚举量列表命名枚举量列表 枚举对象名列表枚举对象名列表;enum 枚举类型名enum 枚举类型名 枚举对象名列表枚举对象名列表;/在已有枚举类型下,最常用的定义形式/在已有枚举类型下,最常用的定义形式enumenum 命名枚举量列表命名枚举量列表 枚举对象名列表枚举对象名列表;/使用较少的定义形式/使用较少的定义形式9 98.7.2 8.7.2 枚举类型对象枚举类型对象可以在定义对象时进行初始化,其形式为:例如:枚举对象名1枚举对象名1=初值1初值1,枚举对象名2枚举对象名2=初值2初值2,.;,.;enumenum tagDIRECTIONtagDI
5、RECTION LEFTLEFT,UPUP,RIGHTRIGHT,DOWNDOWN,BEFOREBEFORE,BACKBACK dirdir=LEFTLEFT;10108.7.2 8.7.2 枚举类型对象枚举类型对象本质上,枚举类型对象是其值限定在枚举值范围内的整型变量。在许多应用程序中,例如设计使用操作杆的游戏程序,代表操作方向的变量的取值就希望是有限集合常量,这时使用枚举类型佷方便。11118.7.2 8.7.2 枚举类型对象枚举类型对象当给枚举类型对象赋值时,若是除枚举值之外的其他值,编译器会给出错误信息,这样就能在编译阶段帮助程序员发现潜在的取值超出规定范围的错误。例如:enumenu
6、m tagCOLORS colortagCOLORS color;colorcolor=101101;/错误,不能类型转换/错误,不能类型转换colorcolor=(=(enumenum tagCOLORStagCOLORS)101101;/正确,但结果没有定义/正确,但结果没有定义12128.8 8.8 位域位域“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。13138.8.1 8.8.1 位域的声明位域的声明在声明结构体、共用体类型时,可以指定其成员占用存储空间的
7、二进制位数,这样的成员称为位域(bit field),又称位段。其声明形式为:其中常量表达式为非负整数值,用来指明位域所占存储空间的二进制位长度;位域类型必须是unsigned int或int,有的编译器如VC还允许char和long及其unsigned类型。structstruct/union 结构体union 结构体/共用体类型名共用体类型名 位域类型位域类型 成员名成员名:常量表达式常量表达式;/声明位域/声明位域成员类型成员类型 成员名成员名;/数据成员列表/数据成员列表;14148.8.1 8.8.1 位域的声明位域的声明示例structstruct tagDATEtagDATE /
8、日期类型/日期类型intint weekweek:3 3;/3位,星期/3位,星期intint dayday:6 6;/6位,日/6位,日intint monthmonth:5 5;/5位,月/5位,月intint yearyear:8 8;/8位,年/8位,年;1515数据的内存形式如下:成员week、day、month、year分别占3、6、5、8位。在存储位域时,一般从存储单元的低位至高位分配位域,具体因编译器而异,使用位域时可以不关心这个细节。8.8.1 8.8.1 位域的声明位域的声明16168.8.1 8.8.1 位域的声明位域的声明本质上,位域是按其类型所对应的存储单元(如int
9、)存放的,即将位域存放在一个单元(int)内,若位数不够时再分配一个单元(int),直至能够容纳所有的位域。如上述位域(均为int)共22位,因此需要一个int(32位,4个字节)来存储。17178.8.1 8.8.1 位域的声明位域的声明示例structstruct tagBITDATAtagBITDATA /总计4+1+2+1个字节,32+8+16+8位/总计4+1+2+1个字节,32+8+16+8位intint a a:1 1;/分配1个int(4字节,32位)存储a,只用其中的1位,其余空闲不用。/分配1个int(4字节,32位)存储a,只用其中的1位,其余空闲不用。charchar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计C程序设计 86 程序设计 86
限制150内