enum的使用

在C语言中,enum(枚举)是一种用户定义的数据类型,用于定义一组命名的整数常量。枚举类型可以提高代码的可读性和可维护性,因为它允许使用有意义的名称来代替硬编码的整数值。

基本语法

enum 枚举名 {
    标识符1,
    标识符2,
    ...
    标识符N
};
  • 枚举名:枚举类型的名称。

  • 标识符:枚举常量,默认情况下,第一个标识符的值为0,后续的标识符值依次递增1。

示例

#include <stdio.h>

// 定义一个枚举类型
enum Weekday {
    Monday,    // 0
    Tuesday,   // 1
    Wednesday, // 2
    Thursday,  // 3
    Friday,    // 4
    Saturday,  // 5
    Sunday     // 6
};

int main() {
    // 声明一个枚举变量
    enum Weekday today;

    // 赋值
    today = Wednesday;

    // 使用枚举变量
    if (today == Wednesday) {
        printf("Today is Wednesday.\n");
    }

    // 输出枚举值
    printf("Wednesday is day number %d\n", Wednesday);

    return 0;
}

自定义枚举值

你可以为枚举常量指定特定的整数值:

enum Weekday {
    Monday = 1,
    Tuesday,   // 2
    Wednesday, // 3
    Thursday = 10,
    Friday,    // 11
    Saturday,  // 12
    Sunday     // 13
};

枚举类型的变量

你可以声明枚举类型的变量,并对其进行赋值和比较操作:

enum Weekday today = Friday;

if (today == Friday) {
    printf("It's Friday!\n");
}

枚举与整数的关系

枚举常量实际上是整数,因此可以将枚举值赋给整数变量,反之亦然:

int day = Monday;  // day = 0
enum Weekday tomorrow = day + 1;  // tomorrow = Tuesday

注意事项

  1. 枚举的作用域:枚举类型和枚举常量在定义它们的文件或作用域内可见。

  2. 枚举的大小:枚举类型的大小通常与int相同,但具体取决于编译器实现。

  3. 枚举的命名冲突:枚举常量与普通变量或其他枚举常量不能重名。

另外记录一种枚举的用法(小白很容易忽视):

  1. 定义一个枚举类型:可是采用typedef,具体如下所示

  2. 定义一个数组:数组类型可以不使用枚举的类型别名,直接是unsigned char(即uint8_t),数组内容赋值,可以直接使用枚举定义的值。

typedef enum {
	OpenStatus = 1,  			//BOOL-电源开关
	CockpitStatus = 3, 			//BOOL-坐桶锁开关
	MotorStatus,      			//BOOL-设防,设防打开时不能打开电源
	FindBike = 5,				//NUM-寻车 =1 寻车
	StaticReportFrequency,      //静止上报频率
	DrivingReportFrequency,		//行驶上报频率
	TotalMileage = 11,         //NUM-总里程
	BatteryCycles = 13,			//NUM-电池循环次数
	BatteryCurrentCapacity,      //当前电池容量
	RemainingBatteryPower = 15,	//NUM-剩余电量
	BatteryTemperature,			//电池温度
	BatteryHealth,				//电池健康度
	BatteryConsumption,			//电池耗电量
	ControlVersion = 19,		//软件版本号
	Speed_per_hour	= 21,		//时速
	Open_Charge_Board,           //开充电盖
	TiltWarning	= 26,			//振动报警
	TILT_REPORT,				//倾斜报警
	ControlFailure = 49,		//控制器故障
	MotorFailure = 51,          //电机故障
	StoneAgeEnable = 109,
	bleHidLockEnable = 110,
	bleReportStauts = 111,
	ChargingPower = 114,			//充电功率
	RemainingMileage = 115,			//预估剩余里程
	ChargingCableConnectionStatus = 117,  //充电枪连接状态
	ChargeAppointment = 118,				//充电预约设置
	CollisionNotice = 120,				//碰撞通知
} Module_Param;
const uint8_t module_report[4] = {OpenStatus,RemainingBatteryPower,RemainingMileage,bleReportStauts};
const uint8_t share_report[4]={authkey,auth_account,auth_autolock,BtnPairModelSwitch};

这种使用方式,可以解决很多数据变量赋值的问题,方便代码管理和阅读~

总结

enum 是C语言中一种非常有用的数据类型,它可以帮助你定义一组相关的常量,并使代码更具可读性。通过使用枚举,你可以避免在代码中直接使用硬编码的整数值,从而提高代码的可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值