位段与联合,枚举类型

1.位段与联合(union)

#include <stdio.h>

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 <stdio.h>
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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值