C语言从入门到精通 第10章ppt课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
enum color c1, c2;
或enum color {red,yellow,blue,white,black} c1,c2;
或enum {red, yellow, blue, white, black} c1,c2;
➢枚举类型数据可以进行赋值运算。枚举类型是有序 类型, 枚举类型数据还可以进行关系运算。枚举类型 数据的比较转化成对序号进行比较, 只有同一种枚举 类型的数据才能进行比较。
在定义枚举类型时,程序员可在枚举数据时通过“=”号 自己规定序号,并影响后面的枚举数据的序号,后继序号以此 递增。例如:
enum status {copy=6, delete};
则copy的序号为6, delete的序号为7。 最新课件
上一页下24 一页
第10章 共用体与枚举类型
2. 枚举类型变量的定义 (1) 先定义枚举类型, 再定义枚举类型变量: enum 标识符 {枚举数据表}; enum 标识符 变量表; (2) 在定义枚举类型的同时定义枚举类型变量:
union icf {int i; char c; float f; };
最新课件
上一页下3 一页
第10章 共用体与枚举类型
2 共用体变量的定义 (1) 先定义共用体类型, 再定义共用体变量: ① union {成员表}; ② union 共用体名 变量表;
例如:union data { int i; char ch; float f; }; union data a最,新b课,c件;
最新课件
上一页下21 一页
第10章 共用体与枚举类型
例如
(1) 定义枚举类型status, 包含复制与删除两种状态: enum status {copy, delete}; 枚举类型status仅有两个数据,一个是copy,一
个是delete, 序号为0、 1, 代表复制与删除。
最新课件
上一页下22 一页
最新课件
上一页下14 一页
第10章 共用体与枚举类型
(6)>>(“右移”) 移动对象为正数时,高位补0。为负数时,逻辑右 移,高位补0;算术右移,高位补1。Turbo C采用 的是算术右移,有的C语言版本则采用逻辑右移。 例如,-3>>2,将3右移2位,左边(最高位)补1, 结果为-1。
10.4.2 位段结构
中,不能跨两个单元。如果其单元空间不够,则剩
余空间不用,从下一个单元起存放该位段。
(2)可以通过定义长度为0的位段的方式使下一位
段从下一存储单元开始。
最新课件
上一页下17 一页
第10章 共用体与枚举类型
(3)可以定义无名位段。 (4)位段的长度不能大于存储单元的长度。 (5)位段无地址,不能对位段进行取地址运算。 (6)位段可以以%d,%o,%x格式输出。 (7)位段若出现在表达式中,将被系统自动转换成 整数。
enum 标识符 {枚举数据表} 变量表; (3) 直接定义枚举类型变量: enum {枚举数据表} 变量表;
最新课件
上一页下25 一页
第10章 共用体与枚举类型
例如, 对枚举类型enum color, 定义枚举变量c1、 c2: enum color {red, yellow, blue, white, black};
(6) 共用体类型和结构体类型可以相互嵌套,共用体 中成员可以为数组,甚至还可以定义共用体数组。
最新课件
上一页下9 一页
第10章 共用体与枚举类型
例10.1 写出下列程序的执行结果
main()
{union exx
{int a,b; struct
运行结果:
{int c,d;}lpp; }e={10};
#include “stdio.h” main( )
请输入16进制整数:2fe1
{int x,y;
循环左移4个二进制位得:fe12
printf(“\n请输入16进制整数:”);
scanf(“%x”,&x);
y=x>>(16-4)&0xf;
x=(x<<4)&0xffff; /*16 位 的 C 语 言 程 序 不 需 要 “ 按 位 与”0xffff*/
1. 共用体类型的定义 ➢共用体类型定义用关键字union标识, 形式为: union 标识符
{ 成员说明列表
};
最新课件
上一页下2 一页
第10章 共用体与枚举类型
➢标识符给出共用体名, 是共用体类型名的主体, 定义的共用体类型由“union 标识符”标识。
例如,定义一个共用体类型, 要求包含一个整型 成员,一个字符型成员和一个单精度型成员:
最新课件
上一页下7 一页
第10章 共用体与枚举类型
说明
(1) 共用体变量中,可以包含若干个成员及若干种类型, 但共用体成员不能同时使用。在每一时刻,只有一个成员 及一种类型起作用,不能同时引用多个成员及多种类型。
(2) 共用体变量中起作用的成员值是最后一次存放的成 员值,即共用体变量所有成员共用同一段内存单元,后 来存放的值将原先存放的值覆盖,故只能使用最后一次 给定的成员值。如: a.i=278, a.ch=’D’, a.f=5.78;
60,3600
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);
} 最新课件
1返0 回
第10章 共用体与枚举类型
10.3 共用体变量的应用
例10.2 设有若干教师的数据,包含有教师编号、姓 名、职称,若职称为讲师,则描述他们的所讲课程, 若职称为教授,则描述他们所写论文数目。
第10章 共用体与枚举类型
(2) 定义枚举类型color,包含红、黄、蓝、白、黑 五种颜色:
enum color {red, yellow, blue, white, black}; 枚举类型color有red、 yellow、 blue、 white、 black五个数据, 序号为0、 1、 2、 3、 4, 代表红、 黄、 蓝、 白、 黑五种颜色。
上一页下4 一页
第10章 共用体与枚举类型
(2) 定义共用体类型的同时定义共用体变量
union {
成员表 } 变量表;
例如: union data { int i; char ch; float f;
}a,b,c;
最新课件
上一页下5 一页
第10章 共用体与枚举类型
(3)定义共用体类型时,省略共用体类型名,同时 定义共用体类型变量
}data;
最新课件
上一页下16 一页
第10章 共用体与枚举类型
➢位段数据的引用,同结构体成员中的数据引用一样, 但应注意位段的最大取值范围不要超出二进制位数定 的范围,否则超出部分会丢弃。
例如:data.a=2; 但 data.a=10;就超出范围(a占2位,
最大3)
关于位段数据,注意以下几点
(1)一个位段必须存储在同一存储单元(即字)之
union
例如:
{ 成员表
} 变量表;
union { int i; char ch;
float f;
}a,b,c;
最新课件
返6 回
第10章 共用体与枚举类型
10.2 共用体变量的引用
共用体变量不能直接使用,只能使用里面的某 个成员,其成员同样通过点运算描述。形式为:
共用体变量名.
例如,定义上面共用体类型变量a ,a占有4个 字节的空间,a.i 表示其整型成员,a.ch表示其字符 型成员,a.f表示其单精度型成员。
不能企图通过下面的printf函数得到a.i和a.ch的值:
printf(“%d,%c,%f”, a.i, a.ch, a.f);
但能得到a.f的值。
最新课件
上一页下8 一页
第10章 共用体与枚举类型
(3) 共用体变量的地址和它的各个成员的地址相同。
(4) 不能企图引用共用体变量名来得到某成员的值。 (5) 共用体变量不能作函数参数,函数的返回值也不 能是共用体类型。
查看程序请 点击
最新课件
上一页下11 一页
第10章 共用体与枚举类型
10.4 位运算与位段结构
位是指二进制数的一位,其值为0或1。 位段以位为单位定义结构体(或共用体) 中成员所占存储空间的长度。 含有位段的结构体类型称为位段结构。
10.4.1 位运算
在用位运算符进行数的运算时,数是以补码 的形式参加运算的。
➢ 位段结构也是一种结构体类型,只不过其中含有 以位为单位定义存储长度的整数类型位段成员。采用 位段结构既节省存储空间,又可方便操作。
最新课件
上一页下15 一页
第10章 共用体与枚举类型
➢ 位段结构中位段的定义格式为:
unsigned <成员名>:<二进制位数> 例如:
struct bytedata {unsigned a:2; /*位段a,占2位*/ unsigned:6; /*无名位段,占6位,但不能访问*/ unsigned:0; /*无名位段,占0位,表下一位段从下一 字边界开始*/ unsigned b:10; /*位段b,占10位*/ int i; /*成员i,从下一字边界开始*/
最新课件
上一页下23 一页
第10章 共用体与枚举类型
(3) 定 义 枚 举 类 型 weekday , 包 含 一 周 的 n, tue, wed, thu, fri, sat};
枚举类型weekday有sun、 mon、 tue、 wed、 thu、 fri、 sat七个数据, 序号为0、 1、 2、 3、4、 5、 6, 代表一周中 的星期天、星期一、星期二、星期三、星期四、 星期五、星 期六。
具体步骤为:
(1)取出16进制整数x的最高4个二进制位至y:
y=x>>(16-4)&0xf。
(2)将该整数x(占2字节)左移4个二进制位:
x=(x<<4)&0xffff。0
最新课件
上一页下19 一页
第10章 共用体与枚举类型
(3)将先前取出的最高4个二进制位放入低4个二进 制
位: x=x|y。
运行结果
最新课件
上一页下18 一页
第10章 共用体与枚举类型
例10.1 编程将一个16进制整数(占2字节)的各位 循环左移4个二进制位,如2fe1循环左移4个二进制 位后为fe12。
分析:可先取出16进制整数的最高4个二进制位,然 后将该整数左移4个二进制位,最后将先前取出的最 高4个二进制位放入低4个二进制位位置。
最新课件
上一页下12 一页
第10章 共用体与枚举类型
1. 位运算(主要有:&、|、~、^、>>、<<) (1)&(按位“与”) •运算规则为:0&0=0,0&1=0,1&0=0,1&1=1 •例如,-5&3的值为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相位或后得11111011,
其真值为-0000101,即-5。
最新课件
上一页下13 一页
第10章 共用体与枚举类型
(3)^(按位“异或”) •运算规则为:0^0=0,0^1=1,1^0=1,1^1=0 •例如,-5^3的值为-8。 (4)~(按位“取反”) •运算规则为:~0=1,~1=0 •例如,~7的值为-8。 (5)<<(“左移”) 例如,3<<2,将3左移2位,右边(最低位)补0, 结果为12,相当于3×2×2的结果。
x=x|y; printf(“循环左移4个二进制位得:%x”,x);
}
最新课件
2返0 回
第10章 共用体与枚举类型
10.5 枚举类型
1. 枚举类型的定义 ❖枚举类型定义用关键字enum标识,形式为:
enum {枚举数据表}; 标识符用来区分不同的枚举类型,定义的枚举类 型用enum标识符”标识。 ❖枚举数据(枚举常量)是一些特定的标识符, 标识 符代表什么含义,完全由程序员决定。数据枚举的顺 序规定了枚举数据的序号,从0开始,依次递增。
C语言程序设计教程
第 10 章 共用体与枚举类型
10.1
10.2 10.3 10.4 10.5 10.6
共用体类型与共用体变量
共用体变量的引用 共用体变量的应用 位运算与位段结构 枚举类型 类型定义
最新课件
返1 回
第10章 共用体与枚举类型
10.1 共用体类型与 共用体变量
共用体是C的由用户定义的数据类型。共用体把 不同类型的数据项组成一个整体,这些不同类型的数 据项在内存中所占用的起始单元是相同的。
相关文档
最新文档