union 共用体名
{
数据类型1 成员变量1;
数据类型2 成员变量2;
数据类型3 成员变量3;
...
};
共用体所有成员变量,所占空间重叠,占共同的空间。
将变量的值一一列举出来。
enum 枚举类型名
{
枚举常量1,
枚举常量2,
枚举常量3,
..
};
注意:
#include enum weekday { Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun, }; int main(void) { enum weekday day; printf("请输入今天星期几:\n"); scanf("%d", (int *)&day); switch (day) { case Monday:printf("1和6限号!\n");break; case Tuesday:printf("2和7限号!\n");break; case Wednesday:printf("3和8限号!\n");break; case Thurday:printf("4和9限号!\n");break; case Friday:printf("0和5限号!\n");break; case Saturday: case Sunday:printf("不限行!\n"); } return 0; }
用来声明新的类型名来达到给予类型的作用
typedef int I //I不是变量而是拥有int定义作用的新的类型名 typedef int ARRAY[10] //ARRAY可以定义长度为十的一维整型数组
位运算(所有位运算要操作数的类型是与整形或者整形兼容,或者枚举也可以;但是指针,结构体这些都不可以,不与整形兼容)
运算符 | 含义 | 运算符 | 含义 |
& | 按位与(指定位清零) | ~ | 取反 |
| | 按位或(指定位置1) | << | 左移(左移一位该数乘以2) |
^ | 按位异或(指定位翻转,同0异1) | >> | 右移(算术右移,右移一位该数除以2) |
a = a ^ b; b = a ^ b; a = a ^ b;
int main(void) { unsigned int i = 0; unsigned int j = 0x422; int k; { for(k = 0;k < 32; ++k) { if(k % 3 == 0) { i |= (1 << k); } } } printf("%x\n",i); return 0; }
int main(void) { unsigned int i = 0x3; int counter = 0; int k; for(k = 0;k < 32; ++k) { if(i & (0x80000000)) { ++counter; } i = i << 1; } printf("%d\n",counter); return 0; }