枚举定义
/*
把可能的取值一一列举出来,例如一周
相当于定义了一种类型,该类型只有例举的这几个值
*/
//enum day
//{
// //这些可能取值都是有值的,默认从0开始,依次递增1,当然在定义的时候也可以赋初值。
// Mon,//0
// Tues,//1
// Wed,//2
// Thur,//3
// Fri,//4
// Sat,//5
// Sun//6
//};
预处理和枚举的区别
enum day
{
Mon=1,//1
Tues,//2
Wed,//3
Thur,//4
Fri,//5
Sat,//6
Sun//7
};
#define M 10
int main()
{
/*
d是enum day类型的,所以d只能赋值Mon到Sun,无法赋其他值
在c++中 enum day d = 5;是错误的,错误信息为:无法从int转为enum day(类型转换)
*/
enum day d = Fri;
d = 8;
int c = M;
/*
test.c -----(预处理)------->编译------------->链接---------->.exe 调试
在预处理截断M直接替换成10,而Fri不替换,因为他是一个类型,所以调试时是由区别的
*/
printf("%d\n", Mon);
printf("%d\n", Tues);
printf("%d\n", Wed);
printf("%d\n", Thur);
printf("%d\n", Fri);
printf("%d\n", Sat);
printf("%d\n", Sun);
printf("%d\n", d);
return 0;
}
枚举的优点
/*
枚举的优点
1. 增加代码的可读性和可维护性
2. 和#define定义的标识符比较枚举有类型检查,更加严谨。
3. 防止了命名污染(封装)
4. 便于调试
5. 使用方便,一次可以定义多个常量
*/