共用体与枚举类型.ppt

共用体与枚举类型.ppt

ID:51478862

大小:281.31 KB

页数:34页

时间:2020-03-24

共用体与枚举类型.ppt_第1页
共用体与枚举类型.ppt_第2页
共用体与枚举类型.ppt_第3页
共用体与枚举类型.ppt_第4页
共用体与枚举类型.ppt_第5页
资源描述:

《共用体与枚举类型.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章共用体与枚举类型10.1共用体类型与共用体变量union共用体类型名{成员说明列表};uniondata{inti;charch;floatf;};同定义结构体类型一样,共用体变量也有三种方式:(1)先定义共用体类型,再定义共用体变量uniondata{inti;charch;floatf;};uniondataa,b,c;(2)在定义共用体类型的同时定义共用体类型变量uniondata{inti;charch;floatf;}a,b,c;(3)定义共用体类型时,省略共用体类型名,同时定义共用体类型变量union{inti;charch;floatf;}a,b,

2、c;10.2共用体变量的引用一个共用体变量不是同时存放多个成员的值,而只能存放其中的一个值,这就是最后赋给它的值。a.i=278;a.ch=‘D’;a.f=5.78;共用体变量中最后的值是5.78也可以通过指针变量引用共用体变量中的成员,例:uniondata*pt,x;pt=&x;pt->i=278;pt->ch=‘D’;pt->f=5.78;f共用体与结构体的区别:(1)共用体变量a所占的内存单元的字节数不是3个成员的字节数之和,而是等于3个成员中最长字节的成员所占内存空间的字节数,也就是说a的3个成员共享4个字节的内存空间。(2)变量a中不能同时存在3个成员,只是

3、可以根据需要用a存放一个整型数,或存放一个字符数据,或存放一个浮点数。例如:a.ch=‘a’;a.i=100;a.f=3.14;(3)可以对共用体变量进行初始化,但在花括号中只能给出第一个成员的初值。unionmemo{charch;inti;floatx;}y1={‘a’};unionun习题集P125(3){chars[10];longd[3];}ua;structstd{charc[10];doubled;inta;unionunvb;}a;则printf(“%d”,sizeof(structstd)+sizeof(unionun))输出的值为________

4、_____________unionpw习题集P124(3){inti;charch[2];}a;voidmain(){a.ch[0]=13;a.ch[1]=0;printf(“%d”,a.i);}voidmain()例10.1写出执行结果{unionexx{inta,b;struct{intc,d;}lpp;}e={10};e.b=e.a+20;e.lpp.c=e.a+e.b;e.lpp.d=e.a*e.b;printf("%d,%d",e.lpp.c,e.lpp.d);}10.4位运算与位段结构位是指二进制数的一位,其值为0或1。位段以位为单位定义结构体(或

5、共用体)中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。10.4.1位运算位运算符主要有:&(按位“与”),

6、(按位“或”),~(按位“取反”),^(按位“异或”),<<(左移),>>(右移)(1)&(按位“与”)运算规则为:0&0=0,0&1=0,1&0=0,1&1=1-5&3111110110000001100000011所以-5&3=3(2)

7、(按位“或”)运算规则:0

8、0=0,0

9、1=1,1

10、0=1,1

11、1=1-5

12、310110000001111111011-5

13、3=-5(3)^(按位“异或”)运算规则:0^0=0,0^1=1,1^0=1,1^1=0

14、-5^3111110110000001111111000-5^3=-8(4)~(按位“取反”)运算规则:~0=1,~1=0~70000011111111000~7=-8(5)<<(“左移”)3<<2右边(最低位)补0,相当于乘2操作00000011000011003<<2=12相当于3x2x2=12(6)>>(“右移”)移动对象为正数时,高位补0;为负数时,逻辑右移,高位补0;算术右移,高位补1-3>>21111110111111111-3>>2=-110.4.2位段结构位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。structby

15、tedata{unsigneda:2;unsigned:6;unsigned:0;unsignedb:10;inti;}data;位段a2位无名位段6位未用8位位段b10位未用6位成员i16位(2009.9)若有以下程序段intr=8;printf(“%d”,r>>1);输出结果是A)16B)8C)4D)2C(2009.3).有以下程序#includemain(){inta=5,b=1,t;t=(a<<2)

16、b;printf("%d",t);}程序运行后的输出结果是A)21B)11C)6D)1A10.5枚举类型枚

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。