目录
编译环境
编译环境:VS2019
运行结果
test11.c
#include <stdio.h>
//这里为什么不使用define进行宏定义呢?
//C语言源代码-预编译(包括注释删除)+链接-可执行程序=电脑可执行的功能
//有五个优点,1代码规范,2枚举是有类型的,3防止命名冲突,4便于调试,5一次可以定义多个变量
enum Sex
{
male,//0
female,//1
secret//2
};
enum Color
{
red,
green,
blue
};
enum Color_num
{
red_num,//默认还是0
green_num=4,
blue_num//此时默认就是5了
};
union Un //联合体=共用体
{
char c;
int i;
};
int main()
{
union Un u;
enum Sex s = male;
//enum Sex s = 0;//这句话错误,因为0是int型,不能赋给枚举类型
enum Color c = green;
printf("%d\n", male);
printf("%d\n", s);
printf("%d %d %d\n", red_num, green_num, blue_num);
printf("%d\n", sizeof(u));//4
printf("%p\n", &u);//这三个地址完全相同=00E4F6E4,32个字节
printf("%p\n", &(u.c));
printf("%p\n", &(u.i));
int i = 1;
//char* p = &i;//这行语句正确
char* p = (char*) & i;//这句话也对,将int*类型强制转化为了char*类型
if (1 == *p)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
u.i = 1;//这里利用了共用体中char与int共用一个地址,巧妙地判别了大小端问题
if (1 == u.c)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}