C语言 第10章共用-位-枚举.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言 第10章共用-位-枚举

10.1 共用体类型与共用体变量 10.2 共用体变量的引用 10.3 共用体变量的应用 10.4 位运算与位段结构 10.5 枚举类型 10.6 类型定义 (2) 定义共用体类型的同时定义共用体变量 union 共用体名 { 成员表 } 变量表; 例如: union data { int i; char ch; float f; }a,b,c;  (3)定义共用体类型时,省略共用体类型名,同时定义共用体类型变量 union { 成员表 } 变量表; 例如: union { int i; char ch; float f; }a,b,c;  例10.1 写出下列程序的执行结果 main() {union exx {int a,b; struct {int c,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\n”,e.lpp.c,e.lpp.d); } 程序运行结果如下: 60,3600 程序如下: union cf {char clname[30]; /*所讲课程*/ int num; /*论文数目*/ };  struct teachers {int no; /*编号*/ char name[12]; /*姓名*/ char zc; /*职称*/ union cf x; /*可变字段, 为所讲课程或论文数目*/ } teach[3]; 10.4 位运算与位段结构 位是指二进制数的一位,其值为0或1。 位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。 含有位段的结构体类型称为位段结构。 10.4.1 位运算 在用位运算符进行数的运算时,数是以补码的形式参加运算的。 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。Turbo C采用的是算术右移,有的C语言版本则采用逻辑右移。 例如,-32,将3右移2位,左边(最高位)补1,结果为-1。 10.4.2 位段结构 ?位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。 位段结构中位段的定义格式为: unsigned 成员名:二进制位数 例如: struct bytedata {unsigned a:2; /*位段a,占2位*/ unsigned:6; /*无名位段,占6位,但不能访问*/ unsigned:0; /*无名位段,占0位,表下一位段从下一字边界开始*/ unsigned b:10; /*位段b,占10位*/ int i; /*成员i,从下一字边界开始*/ }data; 10.6 类型定义 在使用标准类型定义或说明变量时,可只写标准类型名指明变量数据类型。而用前面介绍的结构体、共用体、枚举等类型定义或说明变量时要冠以表明数据类型类别的关键字,如struct、union、enum等。 C语言提供了用typedef定义类型,为类型命名的机制。 用typedef定义新的类型名后,对于结构体、共用体或枚举类型,使用它们定义或说明变量时不必再冠以类型类别关键字。 1. 简单的名字替换 typedef int INTEGER; 意思是将int型定义为INTEGER,这两者等价,在程序中就可以用INTEGER作为类型名来定义变量了。例如: INTEGER x,y; 相当于int x, y; 2.定义一个类型名代表

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档