共用体与枚举类型.ppt

上传人:sh****n 文档编号:7421938 上传时间:2020-03-21 格式:PPT 页数:44 大小:306.50KB
返回 下载 相关 举报
共用体与枚举类型.ppt_第1页
第1页 / 共44页
共用体与枚举类型.ppt_第2页
第2页 / 共44页
共用体与枚举类型.ppt_第3页
第3页 / 共44页
点击查看更多>>
资源描述
1 C 语言及编程技巧 主讲 匡纲要国防科技大学电子科学与工程学院 湖南长沙 2 第15讲共用体 枚举类型 3 第15讲共用体 枚举类型及位运算 一 引述7 1共用体7 2枚举类型7 3编译预处理 4 引述 共用体 又称联合体或联合 union 一种派生的构造数据类型 但其成员共享同一存储空间 枚举类型 enum 一种由程序员定义的数据类型 它是用标识符表示的整数常量的集合 位运算所有数据在计算机内部都是用位序列表示 C提供了位运算 位运算符以及位域 或称位段 的功能 以便处理一些与机器硬件密切相关的操作 本章主要内容 5 7 1共用体 与结构体类型一样 共用体类型也是一种可由程序员定义的构造数据类型结构体中每一成员有各自的内存空间 而共用体中各成员共享同一内存空间共用体中的成员可以是任何数据类型用来存储共用体的字节数能足以存储其最大的成员多数情况下 共用体包含了两种以上数据类型 但同一时候只能引用一个成员 什么是共用体 6 7 1共用体 union共用体名 共用体成员表 共用体类型定义 其中共用体成员表 类型名1共用体成员名1 类型名2共用体成员名2 类型名n共用体成员名n 7 7 1共用体 例1共用体类型定义示例unionintchar intnum charch 共用体类型 unionintchar 共用体类型定义示例 8 7 1共用体 例2下述共用体类型定义表明 共用体成员本身还可以是一个结构体unionuni intnum struct charfirst charsecond str 共用体类型定义示例 9 7 1共用体 说明共用体变量 简称共用体 可有多种形式 形式一先定义共用体类型 再说明共用体变量例3共用体变量说明示例一unionmixed intnum charch floatfl unionmixedm1 m2 共用体变量说明 10 形式二在定义共用体类型的同时说明共用体变量例4共用体变量说明示例二unionmixed intnum charch floatfl m1 m2 形式三利用匿名共用体类型说明共用体变量例5共用体变量说明示例三union intnum charch floatfl m1 m2 共用体变量说明 7 1共用体 11 7 1共用体 形式四利用typedef为共用体类型取一个别名 再利用此别名说明共用体变量例6共用体变量说明示例四 共用体变量说明 typedefunionmixed intnum charch floatfl MIXED MIXEDm1 m2 12 7 1共用体 形式五利用宏替换命令将共用体类型 即union共用体名 重新起名 再用此新名说明共用体变量例7共用体变量说明示例五 defineMIXEDunionmixedMIXED intnum charch floatfl MIXEDm1 m2 共用体变量说明 13 7 1共用体 共用体变量说明中可带初始化赋值 但C规定 在共用体变量的初始化中 只能用其第一个成员的类型的值进行初始化 例8共用体变量初始化示例unionmixed intnum charch floatfl unionmixedm1 0 m2 若写unionmixedm1 0 0 共用体变量的初始化 int型值0 float型值0 0 编辑时会出现警告信息 14 7 1共用体 例9对于下述共用体变量初始化unioncom intnum charch 2 unioncomc1 0 x4241 十六进制整数1696110 共用体变量的初始化 num 16961 ch 1 B ch 0 A 存储单元内容示意如下 15 7 1共用体 引用共用体成员的两个运算符 和 形式一共用体变量 成员名形式二 共用体指针变量 成员名形式三共用体指针变量 成员名 对共用体成员的引用 16 7 1共用体 结构体和共用体常相结合使用 例11在结构体类型中使用共用体类型示例struct intserialno modelnamemodel colorpaint datetime union struct carstylestyle car struct cubicmeterscapacity tonnesload van vehiclekind vehicle 结构体和共用体结合使用 17 7 1共用体 例12设有一个教师与学生通用的表格 教师数据有姓名 年龄 职业 教研室四项 学生数据有姓名 年龄 职业 班级四项 编程简要模拟输入人员数据 并以表格形式输出 programlistinfo cpp include includemain struct charname 10 intage charjob s student t teacher union intclass charoffice 10 depa body 2 结构体和共用体结合使用 18 7 1共用体 inti for i 0 i body i name body i age body i job if body i job s cin body i depa class elsecin body i depa office fori cout setiosflags ios left endl cout setw 16 Name setw 8 Age setw 8 Job setw 16 class office endl 结构体和共用体结合使用 19 7 1共用体 for i 0 i 2 i if body i job s cout setw 16 body i name setw 8 body i age setw 8 body i job setw 16 body i depa class endl elsecout setw 16 body i name setw 8 body i age setw 8 body i job setw 16 body i depa office endl fori 结构体和共用体结合使用 20 7 1共用体 例13利用共用体的结构特性实现数据的有机分解 programuniondemo cpp includemain union inti struct charfirst charsecond half number 结构体变量的赋值操作 number i 0 x4241 cout number half first number half second endl number half first a number half second b cout number i endl AB6261 21 7 2枚举类型 枚举类型是C提供的一种可由程序员自行定义的数据类型枚举类型是一种简单类型 而不是构造类型枚举类型用关键字enum定义枚举类型定义了一个用描述性标识符 称为枚举直接量 表示的整数常量的集合 枚举类型定义 22 7 2枚举类型 enum枚举名 枚举值名表 其中枚举值名表标识符1 标识符2 标识符n 枚举类型定义 23 7 2枚举类型 示例定义下列枚举类型enumcolors RED YELLOW BLUE WHITE BLACK enumsexes MALE FEMALE enumsuits CLUB DIAMOND HEART SPADE enummonths JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC 枚举类型定义示例 24 7 2枚举类型 具有枚举类型的变量称为枚举变量 枚举变量在使用前需先说明 说明枚举变量亦有多种形式 例14枚举类型定义和枚举变量说明示例enumprimarycolor 形式一 RED YELLOW BLUE enumprimarycolormyfavorcolor enumsexes 形式二 MALE FEMALE Wang Zhang enum 形式三 MON TUE WED THU FRI SAT SUN today yesterday tomorrow 枚举变量说明 25 7 2枚举类型 例15可以说明枚举数组变量 如enummonths JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC enummonthsmonth 12 枚举直接量是自动设置值的符号常量 常量标识符 除非程序员自行指定起始值 否则系统将自动会置枚举直接量的起始值为0 以后的值依次递增1 枚举变量说明示例 26 7 2枚举类型 enum 枚举名 标识符1 整型常量 标识符2 整型常量 标识符n 整型常量 枚举变量的初始化 27 7 2枚举类型 例16enumcolors RED RED的值为0 YELLOW 50 BLUE 100 WHITE WHITE的值为101 BLACK BLACK的值为102 enumcolorscol1 col2 enumdays MON 1 TUE WED THU FRI SAT SUN enumdaysthisday thatday 枚举类型的初始化示例 28 7 2枚举类型 枚举变量 枚举直接量可用于赋值运算 关系运算等 例17承例16 下列诸语句均符合语法规则thisday THU thatday SAT thisday thatday if thisday SAT 枚举变量的运算 29 7 2枚举类型 对于枚举变量的赋值 可以使用强制类型转换将一整数值转换为具枚举类型的相应值 再赋予枚举变量 例19设有下述枚举类型定义和枚举变量说明enumdays MON TUE WED THU FRI SAT SUN enumdaystoday theotherday 问 已知今天是星期六 则大后天将是星期几 today SAT throtherday enumdays int today 3 7 theotherday将有值TUE 即大后天是星期二 枚举类型强制转换 30 7 2枚举类型 示例输出月份阿拉伯数字 1 12 与英文名称 January December 对应表 include includeenummonths JAN 1 FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC main enummonthsmonth char monthname January February March April May June July August September October November December 枚举类型简单应用示例 31 7 2枚举类型 for month JAN month DEC month cout setw 2 int month setw 16 monthname month endl 枚举类型简单应用示例 1January2February3March4April5May6June7July8August9September10October11November12December 32 7 2枚举类型 例20已知口袋中有红 黄 蓝 白 黑5种颜色的球若干个 如果每次从口袋中取出3个球 问得到3种不同颜色球的可能取法 并输出每种排列的三种颜色 分析共有10种组合 60种排列 枚举类型简单应用示例 自己上机编程实现 33 7 2枚举类型 具体编码 programballs cpp include includemain enumcolors RED YELLOW BLUE WHITE BLACK enumcolorsi j k pri intn loop n 0 for i RED i BLACK i for j RED j BLACK j 枚举类型简单应用示例 34 7 2枚举类型 if i j for k RED k BLACK k if k i switchloop 枚举类型简单应用示例 35 7 2枚举类型 switch pri caseRED cout setw 10 red break caseYELLOW cout setw 10 yellow break caseBLUE cout setw 10 blue break caseWHITE cout setw 10 white break caseBLACK cout setw 10 black break default break switchpri forloop cout endl ifk ifi cout endl total setw 5 n 枚举类型简单应用示例 36 7 2枚举类型 1redyellowblue2redyellowwhite3redyellowblack4redblueyellow5redbluewhite6redblueblack 55blackbluered56blackblueyellow57blackbluewhite58blackwhitered59blackwhiteyellow60blackwhitebluetotal 60 枚举类型简单应用示例 37 7 3编译预处理 常用C 编译预处理指令 1 文件包含 inlcude包含 2 定义 取消定义宏替换 define定义 undef取消定义 3 条件编译 if如果 ifdef如果已定义 ifndef如果未定义 elif否则如果 else否则 endif结束如果 4 其它 line设置行号 error出错信息 pragma编译状况设置 38 文件包含命令 include功能 将该指令所指定文件的内容包含进源文件中写该指令的当前点 include指令的一般形式 include或 include 文件名 或 include 文件标识 例 include include include include 7 3编译预处理 include include include incdudeusingnamespacestd 39 定义 取消定义宏指令 define undef define指令最基本的用途是在编译预处理期间作简单的字符串替换 其一般的形式是 define标识符字符序列例 defineGREETING WelcometoC world n definePI3 1416 7 3编译预处理 constcharGREETING WelcometoC world n constdoublePI 3 1416 40 7 3编译预处理 定义 取消定义宏指令 define undef宏指令也可以带参数 其一般形式为 define标识符 参数 字符序列例 include definePI3 1416 defineCIRCUMFERENCE x 2 PI x defineAREA x PI x x voidmain intradius 10 doublecircumference area circumference CIRCUMFERENCE radius area AREA radius constdoublePI 3 1416 inlinedoublecircum doublex return 2 PI x inlinedoublecarea doublex return PI x x circumference circum radius circlearea carea radius 41 7 3编译预处理 定义 取消定义宏指令 define undef undef指令可以结束先前宏替换指令 define 作用 define的作用域从其定义开始 到用 undef指令取消其定义或到源文件结束时为止 例 definePI3 1416 undefPI definePI3 1415926 42 条件编译指令一般形式 if常量表达式程序段1 else程序段2 endif if else与if else的区别 1 if指令的求值发生在编译预处理期间 而if语句的求值发生在程序运行期间 2 if指令中的表达式只能是常量表达式 而且可以不加圆括号 3 整个 if指令不加分号 7 3编译预处理 43 1 结构体类型 共用体类型和枚举类型都是可由程序员自行定义的数据类型 2 共用体又称联合体或联合 它通常系由几种不同的成员组合而成 每个共用体成员有自己的名字 所有共用体成员共享由同一内存起始地址开始的一个存储区 一个共用体变量可被赋予各种类型的数据 但在某一确定的时刻仅能保存它的某一个共用体成员的值 3 枚举类型是简单类型 它定义了用描述标识符 称为枚举常量 表示的整数常量的集合 4 C 语言具有编译预处理功能 提供了一批编译处理指令 7 4小结 44 欢迎进入第八章输入 输出流文件
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!