C语言-枚举

枚举数据类型

typedef enum 
{
	NUM1=1,
	NUM2,
	NUM3,
	NUM4,
	NUM5,
}NUM;

void FunEnumPri(NUM num)
{
	printf("num=%d\n", num);//300
}

void FunEnum()
{
	printf("len=%ld,%ld\n", sizeof(NUM),sizeof(NUM1));//4 4
	printf("NUM5=%d\n", NUM5);//5

	NUM AA;
	AA=100;
	printf("AA=%d\n", AA);//100

	FunEnumPri(300);
}

(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。

(2) NUM是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。

(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。

(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。

(5) 枚举型是预处理指令#define的替代。

(6) 类型定义以分号;结束。

与宏定义差异

1.枚举常量是实体中的一种,但宏不是实体;
2.枚举常量属于常量,但宏不是常量(字符常量);
3.枚举常量具有类型,但宏没有类型,枚举变量具有与普通变量相同的诸如作用域、值等性质,但宏没有,宏不是语言的一部分,它是一种预处理替换符。枚举类型主要用于限制性输入,例如,某个函数的某参数只接受某种类型中的有限个数值,除此之外的其它数值都不接受,这时候枚举能很好地解决这个问题。能用枚举尽量用枚举,否则在调试的时候你是看不到当时的值的。
4.枚举可以一次定义大量相关的常量,而宏只能定义一个。
5.枚举和宏的作用时间和存储形式不同。
6.枚举可以用gdb调试而宏不能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值