资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第十二章 枚举类型与位运算,enum,是关键字,;,枚举名和枚举常量是标识符,;,枚举常量之间用逗号分隔,。,例如:,enum,weekday,Sun,Mon,Tue,Wed,Thu,Fri,Sat;,enum,color1,blue,green,red;,enum,flag,false,true;,12.1,枚举类型,1.枚举类型的定义,枚举类型定义的一般形式:,enum,枚举名,枚举常量取值表,;,在枚举类型中,每个,枚举常量,都代表一个整型值。在定义枚举类型的同时可隐式或显式地,定义枚举常量所代表的值,。,例如:,enum,weekday,Sun,Mon,Tue,Wed,Thu,Fri,Sat;,2.枚举常量的整型值,隐式定义:,按照类型定义时枚举常量列举的顺序分别,代表,0,、,1,、,2,、,等整型值。,0,1,2,3,4,5,6,例如:,enum,op,plus=43,minus=45,multiply=42,divide=47;,enum,workday,Mon=1,Tue,Wed,Thu,Fri;,2.枚举常量的整型值,显式定义:,在定义类型的同时指定枚举常量的值,其中如,有未指定值的枚举常量,则根据前面的枚举常量的,值依次递增,1,。,2,3,4,5,例如:,enum,flag,fg,;,enum,color1,c1,;,enum,color2 blank,brown,yellow,white,c2,;,enum,lightblue,lightgreen,lightred,c3,;,3.枚举变量的定义,枚举类型变量定义的三种形式:,enum,枚举名 枚举变量名表,;,enum,枚举名,枚举常量取值表,枚举变量表,;,enum,枚举常量取值表,枚举变量表,;,3.,枚举变量的赋值和使用,枚举类型在使用中有以下规定:,1.,枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举,weekday,的元素再作以下赋值:,sun=5;mon=2;sun=mon;,都是错误的。,2.,枚举元素本身由系统定义了一个表示序号的数值,从,0,开始顺序定义为,0,,,1,,,2,。如在,weekday,中,,sun,值为,0,,,mon,值为,1,,,sat,值为,6,。,3.,枚举变量使用举例,main(),enum,weekday,sun,mon,tue,wed,thu,fri,sat,a,b,c,;,a=sun,;,b=mon,;,c=tue,;,printf,(,%d,%d,%d,a,b,c,);,3.,枚举变量的赋值和使用,枚举类型在使用中有以下规定:,3.,只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:,a=sum;b=mon,;,是正确的。而:,a=0;b=1;,是错误的。,如果一定要把数值赋予枚举变量,则必须用强制类型转换,如:,a=(,enum,weekday)2;,其意义是将顺序号为,2,的枚举元素赋予枚举变量,a,,相当于:,a=tue,;,还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号,。,main(),enum,body,a,b,c,d,month31,j;,int,i;,j=a,;,for(i=1;id),j=a,;,for(i=1;i,位逻辑运算符,移位运算符,单目,位运算符的运算对象只能是,整型数据,或,字符型数据,,不能是实型数据,运算对象一律按二进制补码参加运算,并,按位进行运算,位运算的结果是一个整型数据,低于单目、算术运算符,高于其他运算符,低于单目、算术和关系运算符,高于其他运算符,位逻辑运算符的运算规则,假设,a,i,和,b,i,均是一个二进制位(,bit,),运算对象,逻辑运算结果,a,i,b,i,a,i,&b,i,a,i,|b,i,a,i,b,i,a,i,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,0,例如:,假设,a=10,b=010,求,a&b、a|b、ab、a,程序如下:,main(),int,a=10,b=010;,printf,(%d%dn,a&b,a|b);,printf,(%d%dn,ab,a,);,输出结果:,8 10,2 -11,0000 0000 0000 1010,&0000 0000 0000 1000,0000 0000 0000 1000,即:,a&b,的值是,8,0000 0000 0000 1010,1111 1111 1111 0101,即:,a,的值是,-,11,移位运算,例如:,ab-1,等价于,(a+8)(b-1),例如:,假设,a=10,b=2,,求,ab-1,main(),int,a=10,b=2;,printf,(%d%dn,ab-1,);,输出结果:,40 9,请自行分析,运行结果,
展开阅读全文