内容正文:
第8章 枚举和位运算
枚举
任务一
位运算
任务二
任务一 枚举
阶段1 枚举类型的定义和枚举变
量的说明
阶段2 枚举类型变量的赋值和
使用
阶段1 枚举类型的定义和枚举变
量的说明
在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
阶段1 枚举类型的定义和枚举变
量的说明
一.枚举的定义
枚举类型定义的一般形式为:
enum 枚举名
{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
阶段1 枚举类型的定义和枚举变
量的说明
二.枚举变量的说明
如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。
阶段2 枚举类型变量的赋值和
使用
枚举类型在使用中有以下规定:
1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如,对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。
2. 枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。例如,在weekday中,sun值为0,mon值为1,…,sat值为6。
任务二 位运算
阶段1 位运算符
阶段2 位域
阶段3 类型定义符typedef
阶段1 位运算符
C语言提供了6种位运算符:
一.按位与运算
按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
阶段1 位运算符
二.按位或运算
按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的两个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
阶段1 位运算符
三.按位异或运算
按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两个对应的二进位相异时,结果为1。参与运算的数仍以补码出现。
阶段1 位运算符
四.求反运算
求反运算符“~”为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。例如,~9的运算为: ~(0000000000001001),结果为:1111111111110110
阶段1 位运算符
五.左移运算
左移运算符“<<”是双目运算符。其功能是把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。
阶段1 位运算符
六.右移运算
右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
阶段2 位域
为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。
阶段2 位域
一.位域的定义和位域变量的说明
位域定义与结构定义相仿,其形式为:
struct 位域结构名
{ 位域列表 };
其中,位域列表的形式为:
类型说明符 位域名:位域长度
阶段2 位域
二.位域的使用
位域的使用和结构成员的使用相同,其一般形式为:
位域变量名.位域名
位域允许用各种格式输出。
阶段3 类型定义符typedef
C语言不仅提供了丰富的数据类型,而且还允许用户自己定义类型说明符,也就是说允许用户为数据类型取“别名”。
类型定义符typedef即可用来完成此功能。
阶段3 类型定义符typedef
例如,有整型量a,b,其说明如下:
int aa,b;
其中,int是整型变量的类型说明符。int的完整写法为integer,为了增加程序的可读性,可把整型说明符用typedef定义为: typedef int INTEGER
这以后就可用IN