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文档。上传文档
查看更多

10.1共用体类型与共用体变量

10.2共用体变量的引用

10.3共用体变量的应用

10.4位运算与位段结构

10.5枚举类型

10.6类型定义;10.1共用体类型与共用体变量;标识符给出共用体名,是共用体类型名的主体,定义的共用体类型由“union标识符”标识。例如,定义一个共用体类型,要求包含一个整型成员,一个字符型成员和一个单精度型成员:

unionicf

{inti;

charc;

floatf;

};;2共用体变量的定义;〔2)定义共用体类型的同时定义共用体变量;(3)定义共用体类型时,省略共用体类型名,同时定义共用体类型变量;10.2共用体变量的引用;说明:

(1)共用体变量中,可以包含假设干个成员及假设干种类型,但共用体成员不能同时使用。在每一时刻,只有一个成员及一种类型起作用,不能同时引用多个成员及多种类型。

(2)共用体变量中起作用的成员值是最后一次存放的成员值,即共用体变量所有成员共用同一段内存单元,后来存放的值将原先存放的值覆盖,故只能使用最后一次给定的成员值。如:a.i=278,a.ch=’D’,a.f=5.78;

不能企图通过下面的printf函数得到a.i和a.ch的值:

printf(“%d,%c,%f”,a.i,a.ch,a.f);

但能得到a.f的值。;(3)共用体变量的地址和它的各个成员的地址相同。

(4)不能企图引用共用体变量名来得到某成员的值。(5)共用体变量不能作函数参数,函数的返回值也不能是共用体类型。

(6)共用体类型和结构体类型可以相互嵌套,共用体中成员可以为数组,甚至还可以定义共用体数组。;例10.1写出以下程序的执行结果;10.3共用体变量的应用

例10-2设有假设干教师的数据,包含有教师编号、姓名、职称,假设职称为讲师,那么描述他们的所讲课程,假设职称为教授,那么描述他们所写论文数目。;程序如下:;main〔〕

{inti;

for〔i=0;i3;i++〕

{scanf〔″%d,%s,%c″,teach[i].no,teach[i].name,

teach[i].zc〕;

if〔teach[i].zc==′L′〕/*L表示讲师*/

scanf〔″%s″,teach[i].x.clname〕;

elseif〔teach[i].zc==′P′??/*P表示教授*/

scanf〔″%d″,teach[i].x.num〕;

elseprintf〔″inputdataerror\n″〕;

}

for〔i=0;i3;i++〕

{printf〔″%d%s%c″,teach[i].No,teach[i].name,

teach[i].zc〕;

if〔teach[i].zc==′L′〕printf〔″%s\n″,teach[i].x..clname〕;

elseif〔teach[i].name==′P′〕printf(%d\n,teach[i].x.num);elseprintf〔″dataerror\n″〕;

}

};10.4位运算与位段结构;1.位运算;〔2〕|〔按位“或”〕;〔5〕〔“左移”〕;10.4.2位段结构;位段数据的引用,同结构体成员中的数据引用一样,但应注意位段的最大取值范围不要超出二进制位数确定的范围,否那么超出局部会丢弃。

例如:data.a=2;但data.a=10;就超出范围〔a占2位,最大3〕

关于位段数据,注意以下几点:

〔1〕一个位段必须存储在同一存储单元〔即字〕之中,不能跨两个单元。如果其单元空间不够,那么剩余空间不用,从下一个单元起存放该位段。

〔2〕可以通过定义长度为0的位段的方式使下一位段从下一存储单元开始。

〔3〕可以定义无名位段。

〔4〕位段的长度不能大于存储单元的长度。

〔5〕位段无地址,不能对位段进行取地址运算。

〔6〕位段可以以%d,%o,%x格式输出。

〔7〕位段假设出现在表达式中,将被系统自动转换成整数。;例10.3编程将一个16进制整数〔占2字节〕

文档评论(0)

展翅高飞2020 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档