C语言15-枚举、位运算

枚举

在编程的问题中,往往需要用一个变量,来保存某种“状态”,比如之前通过状态机实现语法高亮。
再比如,贪吃蛇中,需要一个变量,来保存他的前进方向。

#define DIR_UP 0
#define DIR_DOWN 1
#define DIR_LEFT 2
#define DIR_RIGHT 3
int nDirection = DIR_UP;

这样做在语法上没有问题,但是在编程逻辑过程中,可能埋下隐患,因为int表示的范围,比我们约定的方向种类,要大的多
比如说,万一有程序员,无意中写了一下的语句进行赋值:

nDirection = 0;//语法正确,逻辑正确,表示向上
nDirection = 5;//语法正确,逻辑不正确,因为5没有被约定

C语言中,为了解决这种“在限定范围内赋值”的问题,发明了枚举变量类型。

枚举的语法

定义枚举类型:

enum ENUM_DIRECTION/*类型名*/ 
{ 
    //状态范围 
    UP,
    DOWN, 
    LEFT, 
    RIGHT 
};

用枚举类型定义变量:

int main(int argc, char* argv[])
{
    enum ENUM_DIRECTION eSnakedir;
    eSnakedir=DOWN;
    return 0;
}

枚举的原理

总之,枚举变量,其实就是在编译时会做范围检查的int类型的变量

enum ENUM_DIRECTION/*类型名*/ 
{ 
    //状态范围 
    UP,
    DOWN, 
    LEFT, 
    RIGHT 
};

int main(int argc, char* argv[])
{
    enum ENUM_DIRECTION eSnakedir;
    eSnakedir=LEFT;
    printf("%d, %d", sizeof(eSnakedir), eSnakedir);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值