c语言 enum linux,C语言之枚举的定义以及测试

1:什么是枚举

枚举在C语言中其实就是一些符号常量集,简单来说,枚举就是定义了一些符号(字符串),这些字符的本质就是int类型的常量,每个符号和一个常量相绑定,那么这个符号就成为了一个自定义的识别码,对编译器来说对枚举的认知就是符号常量所绑定的那个int类型的数。直白来讲,枚举就是自己定义一些符号,然后这些符号对应int类型的数,对于程序员来讲,这些符号可以帮助程序员理解代码,而对于编译器来讲,编译器是不认识我么定义的枚举符号的,编译器只认识这个枚举变量所对于的int类型的数

2:枚举的作用

enum ER

{

error;

right;

}

int E_or_R(int a , int b)

{

if(a>b)

{

return right;

}

else

{

return error;

}

}

int main(void)

{

printf("plese input a & b \n");

scanf("%d%d",&a,&b);

int c = E_or_R(a , b);

if(c==right)

{

printf("a>b \n");

}

else(c==error)

{

printf("a<=b \n");

}

return 0;

}

如上面的代码所示,我们通过枚举元素right和error来判断函数E_or_R()返回值,这样就可以很直观地看清楚代码,(因为一般人觉得函数执行成功返回1,函数执行失败返回1,但是不免有人写代码时会把函数执行成功返回0,函数执行失败返回1)。

3:枚举和宏定义的区别

我们知道,宏定义也是用来标示一些参数,让程序员能更直观地看懂代码的方法,但是枚举和宏定义又有区别,比如宏定义是分散定义的,而采用枚举则可以集中定义在一个枚举变量里面,比如我现在要用 SUN MON 等来定义一周的星期

采用红定义的方法是

#define  SUN 0

#define  MON 1

......

#define  SAT 6

而采用枚举的方法

12345678910 enum week

{

SUN,        // SUN = 0

MON,        // MON = 1;

TUE,

WEN,

THU,

FRI,

SAT,

};

总上所述:

当我们要定义的常量是一个有限集合时(譬如一星期有7天,譬如一个月有31天,譬如一年有12个月····),最适合用枚举。(其实宏定义也行,但是枚举更好)

C语言枚举测试

#include

/*  定义方法1:只定义枚举类型,不定义变量

enum week

{

SUN,        // SUN = 0

MON,        // MON = 1;

TUE,

WEN,

THU,

FRI,

SAT,

};

*/

/*定义方法2:同时定义枚举类型和变量

enum week

{

SUN,        // SUN = 0

MON,        // MON = 1;

TUE,

WEN,

THU,

FRI,

SAT,

}today;

*/

/*定义方法3:同时定义枚举类型和变量

enum week

{

SUN,        // SUN = 0

MON,        // MON = 1;

TUE,

WEN,

THU,

FRI,

SAT,

}today,yestaday;

*/

/*定义方法4:

typedef enum week

{

SUN,        // SUN = 0

MON,        // MON = 1;

TUE,

WEN,

THU,

FRI,

SAT,

}week;

*/

typedef enum

{

SUN,        // SUN = 0

MON,        // MON = 1;

TUE,

WEN,

THU,

FRI,

SAT,

}week;

int main(void)

{

/*  测试定义方法1

enum week today;

today = SUN;

printf("today is %dth \n",today);

*/

/*测试定义方法2 3

today = SUN;

yestaday = SAT;

printf("today is %dth \n",today);

printf("yestaday is %dth \n",yestaday);

*/

/*测试定义方法4  5

week yestaday;

yestaday = SAT;

printf("yestaday is %dth \n",yestaday);

*/

return 0;

}

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值