1 枚举类型
2 enum sex
3 {
4 //枚举的可能取值 - 常量s
5 male = 2,//给枚举常量赋初值ss
6 female = 4,
7 secret = 8
8 };
9
10 enum color
11 {
12 red,
13 green,
14 blue,s
15 };
16 int main()
17 {
18 //枚举类型的定义
19 //enum sex s=male;
20 //只能拿枚举常量给枚举变量赋值,才不会出现类型的差异s
21 //senum color c = blue;
22 printf("%d %d %d\n", red, green, blue);
23 printf("%d %d %d\n", male, female, secret);
24 system("pause");
25 return 0;
26 }
27
28 #define red 0
29 #define green 1
30 #define blue 2
31 int main()
32 {
33 enum color c = 2;//errors
34 int color = red;
35 system("pause");
36 return 0;
37 }
38
39
40 联合 - 联合体 - 共用体 - 共用同一块空间
41 联合体类型的声明
42 union un
43 {
44 char c;
45 int i;
46 };
47 int main()
48 {
49 union un u;
50 printf("%d\n", sizeof(u));//4个字节
51 printf("%p\n", &(u.c));
52 printf("%p\n", &(u.i));
53 printf("%p\n", &(u));
54 system("pause");
55 return 0;
56 }
57
58 计算当前机器是大端存储模式还是小端存储模式
59 int check_sys()
60 {
61 int a = 1;
62 //返回表示小端,返回0表示大端
63 return *(char*)&a;
64 }
65 int main()
66 {
67 //int a = 0x11223344;
68 //低地址---->高地址 - 大端存储模式
69 //高地址---->低地址 - 小端存储模式
70 //讨论一个数据,放在内存中的存放的字节序
71 //大小端字节序问题
72 int a = 1;
73 int ret = check_sys();
74 if (1 == *(char*)&a)
75 {
76 printf("小端\n");
77 }
78 else{
79 printf("大端\n");
80 }
81 system("pause");
82 return 0;
83 }
84
85 int check_sys()
86 {
87 //匿名联合体类型的名字可以省略且用一次就不再创建了
88 union un
89 {
90 char c;
91 int i;
92 }u;//创建联合体的变量u
93 u.i = 1;
94 //返回1表示小端
95 //返回0表示大端
96 return u.c;
97 }
98
99 //计算枚举类型的大小
100 enum sex
101 {
102 male,
103 female,
104 secret
105 };
106 int main()
107 {
108 enum sex s ;
109 printf("%d\n", sizeof(s));//取的是整型的值
110 system("pause");
111 return 0;
112 }
113
114 union un
115 {
116 int a;//4个字节
117 char arr[5];//5个字节
118 };
119 int main()
120 {
121 union un u;
122 printf("%d\n", sizeof(u));
123 system("pause");
124 return 0;
125 }