c程序设计教程第12章枚举类型、位运算

上传人:san****019 文档编号:70133623 上传时间:2019-01-16 格式:PPT 页数:20 大小:779.01KB
返回 下载 相关 举报
c程序设计教程第12章枚举类型、位运算_第1页
第1页 / 共20页
c程序设计教程第12章枚举类型、位运算_第2页
第2页 / 共20页
c程序设计教程第12章枚举类型、位运算_第3页
第3页 / 共20页
c程序设计教程第12章枚举类型、位运算_第4页
第4页 / 共20页
c程序设计教程第12章枚举类型、位运算_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《c程序设计教程第12章枚举类型、位运算》由会员分享,可在线阅读,更多相关《c程序设计教程第12章枚举类型、位运算(20页珍藏版)》请在金锄头文库上搜索。

1、,枚举定义,枚举定义:变量的取值是有限的、固定的;如一周只有七天,一年只有十二个月。枚举是一个整型符号常量的集合。 枚举类型定义: enum 枚举类型名 枚举值表 ; 如: enum week sun, mon, tue, wed, thu, fri, sat ; enum week sat=6,sun, mon=1, tue, wed=5, thu, fri;,枚举值默认值从0开始递增,如果进行初始化,后面的枚举常量会以初始化的值进行递增,直到遇到另一个枚举常量初始化为止。,枚举类型变量的定义,方法一:enum 枚举类型名 变量名表; Enum week w1,w2; 方法二:定义类型的同时

2、定义变量 enum week Sun, Mon, Tue, Wed, Thu, Fri, Sat w1,w2;,枚举变量的初始化,enum week sun, mon, tue, wed, thu, fri, sat w1,w2; w1=mon; w2=sat; printf(“%d,%dn”,w1,w2); 则输出结果是多少?,1,6,typedef类型定义,1.含义:可以为数据类型取别名,别名的作用和数据类型的作用一样。 格式: typedef 类型名 标识符; 含义:定义标识符是类型名的别名 typedef int INTEGER; INTEGER a,b,c;作用与int a,b,c;

3、一样,2019/1/16,6,枚举编程举例,口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。 球只能是5种色之一,而且要判断各球是否同色,应该用枚举类型变量处理。 设取出的球为i,j,k。根据题意,i、j、k分别是5种色球之一,并要求i!=j!=k。可以用穷举法,即一种可能一种可能的试,看哪一组符合条件。,2019/1/16,7,用typedef说明类型的步骤,1) 先用定义变量的方法写出定义体。 2) 把变量名换成新类型名。 3) 在最前面加上typedef。 4) 已定义完新类型名,可用此新类型名去定义变量。,

4、练习,定义float类型的别名为 REAL;并用别名定义两个变量a,b; 定义结构体struct int month,day,yesr;的类型别名为DATE;并用别名定义结构体变量birthday. 定义枚举 enum date=year,month,day的类型别名为 DATE;并用别名定义两个枚举变量a=month,b=year;,2019/1/16,9,Typedef练习:,定义长度为100的整型数组int a100;的类型别名为 NUM ;并用别名定义一个数组变量n; 定义字符指针 char *ss的别名为STRING ;并用别名定义两个字符指针变量p,q。,2019/1/16,10,

5、typedef举例:,typedef int INTEGER; INTEGER i,j;-基本类型 typedef float REAL; REAL a,b; -基本类型 typedef struct(union) -结构体(共用体) int month,day,yesr; DATE; DATE birthday,*p; typedef enum date=year,month,day DATE; DATE a=month,b=year; typedef int NUM100; NUM n; -数组 typedef char *STRING; STRING p,s10; -指针 typedef

6、 int (*POINTER)(); POINTER p1,p2;-函数指针,2019/1/16,11,typedef优点:,用typedef可以声明各种类型名,但不能用来定义变量。用typedef声明数组类型,字符串类型,结构类型后,使用会比较方便; 用typedef只是对已经存在的类型增加一个类型名,没有创造新的类型。 使用typedef有利于程序的通用与移植。如将Int a,b,c;改为long a,b,c;如果程序中多处用Int定义变量,则要改动多处。如果用typedef定义类型: typedef int INTEGER;后,在程序中所有整型变量都用INTEGER定义。改变时,只需把t

7、ypedef int INTEGER;改变为 typedef long INTEGER;即可,2019/1/16,12,位运算 共有六种运算符,注意:1.位运算是对二进制的位进行运算 2.只能对int型、char型和long型进行位运算,2019/1/16,13,运算规律,真值表,位运算,2019/1/16,14,左移运算,左移功能:把左边的运算数的各个二进位全部左移若干位,由右边的数指定移动的位数,高位丢弃,低位补0; 如a=3;a=a4;后,a=48; 如果左移时被舍弃的高位中不包含1,则左移1位相当于乘以2(扩大2倍);如1100 00002后变为0000 0000,被舍弃的高位中含有1

8、,因此虽左移2位,值并没有扩大4倍。而0011 00002后变为1100 0000;被舍弃的高位中不包括1,所以值扩大4倍,2019/1/16,15,右移运算,右移功能:把左边的运算数的各个二进位全部右移若干位,由右边的数指定移动的位数,高位丢弃,低位补0; 如a=16;a=a2;后,a=4; 如果右移时被舍弃的低位中不包含1,则右移1位相当于除以2(缩小2倍);如000 11112后变为0000 0011,被舍弃的低位位中含有1,因此虽右移2位,值并没有缩小4倍。而0011 00002后变为0000 1100;被舍弃的低位中不包括1,所以值缩小4倍 如果高位为1,则右移时高位补1,高位为0,

9、高位补0;,2019/1/16,16,实例:已知:int x=7,y=10,z=1;设字长为8位,求:,2 (0000 0111 & 0000 1010 = 0010) 1 (0000 0111 & 0000 0001 = 0001) 15 (0000 0111 0000 1010 = 1111) 11 (0000 1010 0000 0001 = 1011) 13 (0000 0111 0000 1010 = 1101) 8 ( 0000 0111 ) = 1111 1000 7 28 (0000 0111 2 = 0000 0010) 1 (0000 0111 2 = 0000 0001)

10、,x & y = x & z = x y = y z = x y = x = x = x2 = x2 =,2019/1/16,17,格式:sizeof (表达式或数据类型) 功能:求运算对象在内存中所占的字节数,求: printf(“%d,%dn”, sizeof ( int ), sizeof ( char ) );,五. sizeof 运算符,结果:2,1,求:printf(“%d“, sizeof(“ASTn01212“);,结果:10,2019/1/16,18,运算符小结,算术运算符: +,-,*,/,% 赋值运算符: = 关系运算符: ,=, , ,sizeof( ),(type),,2019/1/16,19,运算符的优先级,2019/1/16,20,5 本章小结,枚举类型是一种基本数据类型,而不是一种构造类型。 位运算符只有逻辑运算和移位运算两类。位运算符可以与赋值符一起组成复合赋值符。如 &=,|=,=,=,=等。 利用位运算可以完成汇编语言的某些功能,如置位,位清零,移位等。还可进行数据的压缩存储和并行运算。 位域在本质上也是结构类型,不过它的成员按二进制位分配内存。其定义、说明及使用的方式都与结构相同。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号