C语言Chapter8结构体和共用体题材.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.6 枚举类型 枚举值add、sub等本身就是常量,不允许对其进行赋值操作,如 add=3; sub=6; 都是错误的。但可以在声明时人为规定枚举值的序号,例如: enum operater {add=2, sub, mul, div}; 8.6.1 枚举类型的声明和变量定义 8.6 枚举类型 没有指定具体值的枚举元素,其值为前一元素值加1。这里add的值为2,sub的值就为3,其他依此类推。取值不一定按递增顺序排列,例如: enum operater {add=4, sub=1, mul, div}; 8.6.1 枚举类型的声明和变量定义 8.6 枚举类型 此时add的值为4,sub的值为1,mul的值为2,div的值为3。如果对枚举元素的值出现人为的重复声明,如 enum operater {add=1, sub=1, mul, div}; 系统会报错:error C2196: case value 1 already used。 8.6.1 枚举类型的声明和变量定义 8.6 枚举类型 有些隐含有重复声明,例如: enum operater {add=2, sub=1, mul, div}; 此时add和mul的值均为2,系统也会报错。 8.6.1 枚举类型的声明和变量定义 8.6 枚举类型 本小节的讨论都基于如下枚举类型的声明和枚举变量的定义: enum operater {add, sub, mul, div}; enum operater op1,op2; 8.6.2 枚举类型数据的操作 8.6 枚举类型 1. 枚举变量的赋值 只能给枚举变量赋枚举值,赋值运算符两边必须属于同一枚举类型。例如,以下的赋值是正确的: op1=add;op2=div; 而 op1=pow; 是错误的。 8.6.2 枚举类型数据的操作 8.6 枚举类型 因为op1被定义为enum operater类型,而枚举值pow不属于enum operater类型。 不能直接给枚举变量赋整型值,因此以下的赋值是错误的。 op1=1; 但可以利用强制类型转换实现赋整型值。 8.6.2 枚举类型数据的操作 8.6 枚举类型 2. 枚举元素加(减)一个整数的运算 枚举元素可以进行加(减)一个整数的运算,从而得到其后(前)面的某个元素。例如: op1=sub+2; /*op1得到枚举值div*/ op2=op1-1; /*op2得到枚举值mul*/ 8.6.2 枚举类型数据的操作 8.6 枚举类型 3. 枚举类型数据的关系运算 枚举类型数据可以进行关系运算。关系比较的依据是类型声明中各元素的值。例如: addsub的值为“假” /*add的值为0,sub的值为l*/ mulsub的值为“真” /*mul的值为2,sub的值为l*/ 8.6.2 枚举类型数据的操作 8.6 枚举类型 4. 枚举类型变量作为循环控制变量 枚举类型变量可以作为循环控制变量,也可以按整型输出其序号值。例如: for (op1=add;op1=div;op1++) printf(%d ,op1); 以上程序段将输出4个整数:0 1 2 3。 8.6.2 枚举类型数据的操作 8.6 枚举类型 5. 枚举变量的输入/输出 枚举变量只能通过赋值语句得到值,不能通过scanf()语句直接读入数据,也不能通过输出语句直接以标识符形式输出枚举元素。必要时可以通过switch语句将枚举值以相应的字符串形式输出。 8.6.2 枚举类型数据的操作 8.7 用户定义类型 在C语言中不但可以直接使用系统已经定义的基本类型(如int、char、float等)和由程序员自己定义的结构体、共用体、枚举类型等,还可以使用typedef来为这些类型定义另外一个名字,这种自定义类型名的方法在描述数据结构中被大量使用。例如,在8.4节中使用typedef定义了单链表结点类型ListNode。 8.7 用户定义类型 使用typedef定义一种新类型名的一般格式如下: typedef 类型名 新名字; 其中,typedef为类型定义的关键字;“类型名”是系统提供的标准类型名或已经定义过的其他类型名;“新名字”是用户定义的与“类型名”等价的一种新类型名,称为用户定义类型。 8.7 用户定义类型 1. 定义结构体变量 例如: typedef struct /*用户定义类型St*/ { char name[12]; char sex; int age; int score; char class[16]; } St; St student1,student2; /*用新类型St定义两个变量*/ 8

文档评论(0)

4477769 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档