STM32中要会的c语言之枚举的用法

c语言枚举知识点:

关键字:enum
用途:定义一个取值范围受限制的整型变量,用于限制变量取值范围;宏定义的集合
定义枚举变量:enum{FALSE=0,TRUE=1}EnumName;
           因为枚举变量类型较长,所以通常用typedef更改变量类型名
引用枚举变量成员:
   EnumName=FALSE;
   EnumName=TRUE;

场景:

测试keil软件中赋值是不是只能按枚举中的定义来?

 #include <stdio.h>

 //步骤2:变量类型比较长,可以用typedef改一下名字,枚举新名字叫week_t
    typedef enum{ 
        MONDAY = 1, 
        TUESDAY ,
        WEDNESDAY 
    }week_t;


    int main()
    {
        week_t week;//步骤3:下面直接用week_t,这样就定义好了枚举变量
        week = MONDAY;//步骤4:然后是引用,当给它赋值时只能是week=MONDAY,这等效于week=1
        week = TUESDAY;//步骤5:等效于week=2
        //week =8;//错误步骤6错误:这个赋值只能按枚举中的定义来,如果写week =8会报警告说枚举中混入了其他变量

   // enum { MONDAY = 1, TUESDAY = 2, WEDNESDAY = 3 }week;//步骤1:限制week这个变量的取值范围,只能取花括号里面的值
    printf("hellow!\n");
    return 0;
}

遇到问题:

User\main.c(6): warning: #550-D: variable "a" was set but never used

原因分析:

实验步骤1:keil5软件stm32标准库main.c文件里第10行ENABLE转到定义。ENABLE是一个枚举值转到定义,看到图1它是一个这样的枚举,然后复制一下枚举类型名定义一个枚举变量a,赋值a=ENABLE或者a=DISABLE,接着编译一下,
在这里插入图片描述

FunctionalState a;
	a=ENABLE;
	a=DISABLE;

编译后看到图2有一个警告,说的是变量a定义了但从来没有被使用,这不是赋值的问题,这说明我们这样赋值是被允许的,
在这里插入图片描述

实验步骤2:那再随便赋值一个比如a=100,编译后看到两个警告,首先说的是枚举中混入了其它类型,这就是枚举的作用,只能在他给定的参数列表里赋值,不能赋其它的值。

在这里插入图片描述
实验步骤3:赋值a=0也不行,虽然a也是枚举中的值,但它只能赋值这个字符串,不能直接给0,如果想赋值0要进行类型强转,
在这里插入图片描述

实验步骤4:如果想赋值0要进行类型强转,转换成对应的枚举类型,这样才没有问题。那这就是枚举的用法了。
在这里插入图片描述

实验步骤5:另外,枚举值也不是必须赋值给枚举变量的,可以随意定义一个变量把枚举值赋给它都行,如int a=ENABLE编译后看到,这只有一个定义却没有使用的警告,说明这也是没有问题的,这样枚举中的定义就和宏定义差不多了(枚举也是宏定义的一个集合),
在这里插入图片描述

解决方案:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值