资源描述:
《共用体枚举和位运算课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第17讲共用体、枚举和位运算第17讲共用体、枚举和位运算本讲主要内容共用体枚举位运算第17讲共用体、枚举和位运算教学目标掌握共用体的概念,掌握共用体类型和共用体变量的定义和使用方法,熟悉共用体数据的特点。掌握枚举的概念,掌握枚举类型和枚举变量的定义和使用方法。了解位运算的概念,掌握按位与、按位或、按位异或、取反、左移位、右移位等六种位运算。了解位段的概念,熟悉位段的特点,掌握位段结构和位段变量的定义和使用方法。一、共用体共用体概述共用体是有别于以前任何一种数据类型的特殊数据类型,它是多个成员的一个组合体,
2、但与结构体不同,共用体的成员被分配在同一段内存空间中,它们的开始地址相同,使得同一段内存由不同的变量共享。共同使用这段内存的变量既可以具有相同的数据类型,也可以具有不同的数据类型。一、共用体共用体类型定义一般形式如下:union共用体名{数据类型成员名1;数据类型成员名2;……数据类型成员名n;};uniondata{inti;charch;floatf;};一、共用体共用体变量的定义1.共用体类型与共用体变量同时定义2.先定义共用体类型,再定义共用体变量3.直接定义共用体变量uniondata{inti
3、;charch;floatf;}u1,u2,u3;uniondata{inti;charch;floatf;};uniondatau1,u2,u3;union{inti;charch;floatf;}u1,u2,u3;一、共用体共用体变量的引用如:使用u5.i形式引用共用变量u5的成员i;使用u5.ch形式引用共用变量u5的成员ch;使用u5.f形式引用共用变量u5的成员f。共用体数据特点1.共用体变量中的值是最后一次存放的成员的值。2.共用体变量不能初始化。3.共用体变量的地址和它的各成员的地址都是同一
4、个地址值,如&u1、&u.i、&u.ch、&u.f是相同的。一、共用体例16-1分析以下程序的执行结果。#include"stdio.h"union{longi;intk;charm;chars[4];}part;main(){part.i=0x12345678;printf("part.i=%lx",part.i);printf("part.k=%x",part.k);printf("part.m=%x",part.m);printf("part.s[0]=%xtpart.s[1]=%x
5、n",part.s[0],part.s[1]);printf("part.s[2]=%xtpart.s[3]=%x",part.s[2],part.s[3]);}二、枚举枚举概述我们在编写程序时,经常遇到变量取值能够列举的情况,例如,表示星期的变量取值有星期一到星期天7个值,表示月份的变量取值有一月到十二月12个值,表示三原色的变量取值有红、黄、蓝3个值等。为了更好地处理这一类变量,ANSIC新标准增加了枚举数据类型,它把变量允许的取值明确列举了出来,使程序更直观,处理更有效。与结构体、共用体一样,
6、枚举也不是一种固定结构的数据类型,它可以根据具体的情况,使用enum关键字进行定义,当定义了一种枚举类型以后,就可以使用已经定义的枚举数据类型定义枚举变量。二、枚举枚举类型及枚举变量1.枚举类型的定义枚举类型的定义形式如下:enum枚举名{枚举值表};例如:enumweekday{Sun,Mon,Tue,Wed,Thu,Fir,Sat};2.枚举变量的定义例如:enumweekdayday1,day2;也可以用下面的语句定义枚举变量:enumweekday{Sun,Mon,Tue,Wed,Thu,Fir,
7、Sat}day1,day2;如下语句没有使用枚举名,而直接定义枚举变量day1、day2:enum{Sun,Mon,Tue,Wed,Thu,Fir,Sat}day1,day2;二、枚举枚举类型及枚举变量3.枚举变量的值枚举变量只能从枚举类型列出的枚举元素中取值。例如,下面的两个赋值语句将使enumweekday型枚举变量day1和day2得到正确的取值。day1=Fri;day2=Wed;而下面的语句在对day1赋值时将发生错误,其原因是Friday不是enumweekday类型的枚举元素。day1=Fr
8、iday;二、枚举枚举类型及枚举变量4.几点说明⑴枚举元素是常量,默认情况下元素的值是其在枚举值表中的顺序号。从第一个枚举元素开始,顺序号依次为0、1、2、...。⑵枚举值是常量,不是变量。⑶在定义枚举类型时,可以指定枚举常量的值。例如:enumweekday{Sun=7,Mon=1,Tue,Wed,Thu,Fri,Sat};此时,Tue、Wed、...的值从Mon的值顺序加1,如,Tue=2。⑷整型与枚举类型是不同的数据类型