《第十二章:枚举类型与位运算.ppt》由会员分享,可在线阅读,更多相关《第十二章:枚举类型与位运算.ppt(13页珍藏版)》请在三一办公上搜索。
1、第十二章 枚举类型与位运算,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.枚举常量的整型值,隐
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,ligh
3、tgreen,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()en
4、um 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;还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。,ma
5、in()enum bodya,b,c,d month31,j;int i;j=a;for(i=1;id)j=a;for(i=1;i=30;i+)switch(monthi)case a:printf(%2d%ct,i,a);break;case b:printf(%2d%ct,i,b);break;case c:printf(%2d%ct,i,c);break;case d:printf(%2d%ct,i,d);break;default:break;printf(n);,12.2 位运算符,&|,位运算符的运算对象只能是整型数据或字符型数据,不能是实型数据运算对象一律按二进制补码参加运算,并
6、按位进行运算位运算的结果是一个整型数据,低于单目、算术运算符,高于其他运算符,低于单目、算术和关系运算符,高于其他运算符,位逻辑运算符的运算规则,假设ai和bi均是一个二进制位(bit),例如:假设a=10,b=010 求a&b、a|b、ab、a,程序如下:,main()int a=10,b=010;printf(%d%dn,a,输出结果:8 102-11,0000 0000 0000 1010&0000 0000 0000 1000 0000 0000 0000 1000即:a&b的值是8,移位运算,例如: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,请自行分析运行结果,