enum 枚举名 { 枚举值表 }; |
enum weekday { sun,mou,tue,wed,thu,fri,sat }; |
enum weekday { ...... }; enum weekday a,b,c;或者为: enum weekday { ...... }a,b,c;或者为: enum { ...... }a,b,c; |
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); } |
main(){ enum body { a,b,c,d } month[31],j; int i; j=a; for(i=1;i<=30;i++){ month[i]=j; j++; if (j>d) j=a; } for(i=1;i<=30;i++){ switch(month[i]) { case a:printf(\" %2d %c\\t\",i,\'a\'); break; case b:printf(\" %2d %c\\t\",i,\'b\'); break; case c:printf(\" %2d %c\\t\",i,\'c\'); break; case d:printf(\" %2d %c\\t\",i,\'d\'); break; default:break; } } printf(\"\\n\"); } |
#p#副标题#e#
位运算
前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。c语言提供了位运算的功能, 这使得c语言也能像汇编语言一样用来编写系统程序。
一、位运算符c语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1. 按位与运算 按位与运算符\"&\"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。
main(){ int a=9,b=5,c; c=a&b; printf(\"a=%d\\nb=%d\\nc=%d\\n\",a,b,c); } |
00001001|00000101 00001101 (十进制为13)可见9|5=13 main(){ int a=9,b=5,c; c=a|b; printf(\"a=%d\\nb=%d\\nc=%d\\n\",a,b,c); } |
00001001^00000101 00001100 (十进制为12) main(){ int a=9; a=a^15; printf(\"a=%d\\n\",a); } |
main(){ unsigned a,b; printf(\"input a number: \"); scanf(\"%d\",&a); b=a>>5; b=b&15; printf(\"a=%d\\tb=%d\\n\",a,b); } |
main(){ char a=\'a\',b=\'b\'; int p,c,d; p=a; p=(p<<8)|b; d=p&0xff; c=(p&0xff00)>>8; printf(\"a=%d\\nb=%d\\nc=%d\\nd=%d\\n\",a,b,c,d); } |