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调试而宏不能。

猜你喜欢

转载自blog.csdn.net/TSZ0000/article/details/82856666