枚举类型名的重定义用法

先看这样一段代码,你认为是对的还是错的呢?

enum boolean{true,false};
boolean bl=false;

乍一看还真以为是对的,其实,这样写是错的,boolean 未定义。

报错如下:

image-20210424105134414

应该这样定义 enum boolean b1=false;,但是如果非要用 boolean 来定义变量的话,就需要对其重定义了

如:typedef enum boolean boolean;

也就是说我们想直接用枚举名来定义变量需要两步

①:定义枚举类型

enum boolean{true,false};

②:对枚举变量名重定义

typedef enum boolean boolean;

接着就可以用枚举名定义变量了,但是,这其实也可以一步搞定

如下:

typedef enum boolean {
	false = 0, true = !false
} boolean;

再来看看人家的解释吧

image-20210424110556448

举个例子说明一下:

#include <stdio.h>

enum DAY1
{
      MON1=1, TUE1, WED1, THU1, FRI1, SAT1, SUN1
};
/*
enum DAY1
{
      MON1=1, TUE1, WED1, THU1, FRI1, SAT1, SUN1
} day1;	//定义枚举类型的同时定义枚举变量也可以
*/

enum DAY2
{
      MON2=10, TUE2, WED2, THU2, FRI2, SAT2, SUN2
};
typedef enum DAY2 DAY2;

typedef enum boolean {
	false = 0, true = !false
} boolean;
 

int main()
{
	enum DAY1 day1;			//若是用DAY1 day1 则是错误的
	DAY2 day2;				//已经对DAY2 重定义过,正确
	boolean b = false;		//boolean重定义过了,所以可以
	if(b == true)
	{
		 // 遍历枚举元素
		for (day1 = MON1; day1 <= SUN1; day1++) {
			printf("枚举元素1:%d \n", day1);
		}	
	}
	else if(b == false)
	{
		// 遍历枚举元素
		for (day2 = MON2; day2 <= SUN2; day2++) {
			printf("枚举元素2:%d \n", day2);
		}
	}
   
}

运行结果:

image-20210424111736258

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值