枚举类型,很常用也很常见的一种数据类型,但枚举类型的本质是什么?答案是—常量。
enum return_value
{
ERROR,
RIGHT,
};
enum return_value func1(void)
{
enum return_value r1;
r1=RIGHT;
return r1;
}
int main()
{
enum return_value r=func1();
printf("my return value=%d",r);值为1
}
上面的枚举类型数据是默认值,但是枚举类型也能够进行赋值,且赋值具有一定规律。
enum return_value
{
ERROR,
RIGHT=23,
};
enum return_value func1(void)
{
enum return_value r1;
r1=ERROR;
return r1;
}
int main()
{
enum return_value r=func1();
printf("my return value=%d",r);值为0
}
给RIGHT赋值而不给ERROR赋值,ERROR值为0,但是:
enum return_value
{
ERROR=23,
RIGHT,
};
enum return_value func1(void)
{
enum return_value r1;
r1=RIGHT;
return r1;
}
int main()
{
enum return_value r=func1();
printf("my return value=%d",r);值为24
}
给ERROR赋值而不给RIGHT赋值则RIGHT的值会在ERROR的基础上+1。
枚举类型的本质就是用字母去代替数字,用字母去实现更直观的表现—字母符号化。
宏定义也是不用数字而是用字符,宏定义与枚举类型的区别:
#define ERROR 0
#define RIGHT 1
①:枚举封装了多个相关常量,宏定义之间彼此无关,枚举类型的实际为多选一。
②:枚举是有限集,彼此相关。
③:枚举是全局变量,不同枚举不能定义相同符号。