位段与联合,枚举类型

1.位段与联合(union)

#include 

union
{
	struct
	{
		unsigned int x1 : 2;
		unsigned int x2 : 3;
		unsigned int x3 : 3;
	}x;
	char y;

}z;

int main()
{
	z.y = 100;
	printf("%d\n",z.x.x3);
	return 0;
}
运行结果:

3

原因:联合的所有成员引用的是内存中的相同位置,100 = 0x64=0110 0100,默认小端模式,低地址存低字节,那么x1为00,x2为001,x3为011


2.枚举类型(enum)

实例:

从键盘输入一个整数,显示与该整数对应的枚举常量的英文名称。

# include 
int main()
{
	enum weekday { sun, mon, tue, wed, thu, fri, sat } day;//声明了一个枚举类型enum weekday,可以用此类型来定义变量, 枚举元素本身由系统定义了一个表示序号的数值,
																//从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…, sat值为6。并定义了一个枚举变量day,它的值只能是sum到sat之一
		int k;
		printf("input a number(0--6)");
		scanf("%d", &k);
		day = (enum weekday)k;//一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值
		switch (day)
		{
		case sun:printf("sunday/n");break;
		case mon: printf("monday/n");break;
		case tue:printf("tuesday/n");break;
		case wed:printf("wednesday/n");break;
		case thu:printf("thursday/n");break;
		case fri: printf("friday/n");break;
		case sat:printf("satday/n");break;
		default:printf("input error/n");break;
		}
	return 0;
}
运行结果:

input a number(0-6)1

monday



你可能感兴趣的:(共用体枚举类型,编程基础)