- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 共用体与枚举10.1 共用体10.2 枚举10.3 位运算与位段结构10.4 用TYPEDEF定义类型名本章小结 10.1 共 用 体10.1.1 共用体变量的定义共用体类型的定义形式与结构体类型的定义形式相同,只是其类型关键字不同,共用体的关键字为UNION。一般格式为:UNION共用体类型名{ 成员说明列表};例如:UNION DATA{ INT I; CHAR CH; FLOAT F;}; 同定义结构体变量一样,定义共同体变量也有3种方式:(1)先定义共用体类型,再定义共用体类型变量。(2)在定义共用体类型的同时定义共用体类型变量。(3)定义共用体类型时,省略共用体类型名,同时定义共用体类型变量。 10.1.2 共用体变量的引用在定义共用体变量之后,就可以引用该共用体变量的某个成员,引用方式与引用结构体变量中的成员相似。但是应当注意,一个共用体变量不是同时存放多个成员的值,而只能存放其中的一个值,这就是最后赋给它的值。例如:A.I=278;A.CH=‘D’;A.F=5.78; 共用体变量A中最后的值是5.78。所以不能企图通过下面的PRINTF函数得到A.I和A.CH的值,但能得到A.F的值。PRINTF(“%D,%C,%F”,A.I,A.CH,A.F);也可以通过指针变量引用共用体变量中的成员,例如:UNION DATA *PT,X;PT=X;PT-I=278;PT-CH=‘D’;PT-F=5.78;PT是指向UNION DATA类型变量的指针变量,先使它指向共用体变量X。此时PT-I相当于X.I,这和结构体变量中的用法相似。不能直接用共用体变量名进行输入/输出。【例10.1】写出下列程序的执行结果。 10.1.3 共用体变量的应用从前面的介绍可知,共用体虽然可以有多个成员,但在某一时刻,只能使用其中的一个成员。共用体一般不单独使用,通常作为结构体的成员,这样结构体可根据不同情况放不同类型的数据。例如,需要把学生和教师的数据放在一起处理。学生和教师的数据相同的部分有:姓名、编号和身份。但也有不同的部分:学生需要保存10门课程的分数,分数用浮点数表示,教师则保存工作情况简介,用字符串表示。教师和学生的不同部分可以用共用体描述。 10.2 枚 举枚举类型定义的一般格式为:ENUM 枚举类型名{标识符1,标识符2,…,标识符N};针对枚举类型有几点说明:(1)ENUM是关键字,标识枚举类型,定义枚举类型必须以ENUM开头。(2)在定义枚举类型时,花括号中的名字称为枚举元素或枚举常量。它们是程序设计者自己指定的,定名规则与标识符相同。这些名字并无固定的含义,只是一个符号,程序设计者仅仅是为了提高程序的可读性才使用这些名字。 (3)枚举元素不是变量,不能改变其值。例如,下面这些赋值是不对的:RED=8;YELLOW=9;但枚举元素作为常量,它们是有值的。从花括号的第一个元素开始,值分别是0、1、2、3、4,这是系统自动赋给的,可以输出。(4)枚举常量可以进行比较。(5)一个枚举变量的值只能是这几个枚举常量之一,可以将枚举常量赋给一个枚举变量。但不能将一个整数赋给它。(6)枚举常量不是字符串,不能用下面的方法输出字符串“RED”。【例10.2】枚举类型应用举例。 10.3 位运算与位段结构10.3.1 位运算位运算符主要有:,|,~,^,和。(1)(按位“与”)运算规则为:00=0,01=0,10=0,11=1例如,-53的值为3。其中-5的补码(为简便起见,用8位二进制表示)为1111 1011,3的补码为0000 0011,按位与的结果为0000 0011,即值为十进制数3。 (2)|(按位“或”)运算规则为:0|0=0,0|1=1,1|0=1,1|1=1例如,-5|3的值为-5。-5与3按位或后其真值为-0000101,即-5。(3)^(按位“异或”)运算规则为:0^0=0,0^1=1,1^0=1,1^1=0例如,-5^3的值为-8。 (4)~(按位“取反”)运算规则为:~0=1,~1=0例如,~7的值为-8。(5)(左移)例如,32,将3左移2位,右边(最低位)补0,结果为12,相当于3×2×2的结果。(6)(右移)移动对象为正数时,高位补0。为负数时,逻辑右移,高位补0;算术右移,高位补1。VISUAL C++ 6.0和TURBO C 2.0采用的是算术右移,有的C语言版本则采用逻辑右移。例如,-32,将3右移2位,左边(最高位)补1,结果为-1。 10.3.2 位段结构位段
文档评论(0)