zoukankan      html  css  js  c++  java
  • 枚举

    枚举 enum 

    枚举 enum 也和int struct 一样,是一种数据类型。

    在使用上enum有些类似struct ,在效果上和#define相同。

    typedef enum Week
    {
        Monday    = 1, 
        Tuesday   = 2, 
        Wednesday = 3, 
        Thursday  = 4, 
        Friday    = 5, 
        Saturday  = 6, 
        Sunday    = 7
    }Weekday1,Weekday2;

    比如上面这个例子,使用typedef定义了一个枚举类型Week,同时还用该类型声明了2个未初始化的变量Weekday1 Weekday2

    这里要注意枚举里的成员,只能是整形,所以即便我们不赋初值,系统也会按照顺序给枚举里的类型自动赋值

    比如:

    typedef enum Week
    {
        Monday = 1, 
        Tuesday   , 
        Wednesday , 
        Thursday  , 
        Friday    , 
        Saturday  , 
        Sunday    
    }Weekday1,Weekday2;

    这段代码的效果和上一个完全相同。

    系统自动为后面的Tuesday 等成员按顺序+1赋了值。

    接下来看一下如何给枚举里的成员赋值

    首先不使用typdef,这里展现了4种赋值方式

    #include <stdio.h>
    
    enum Week
    {
        Monday = 1, 
        Tuesday   , 
        Wednesday , 
        Thursday  , 
        Friday    , 
        Saturday  , 
        Sunday    
    }
    Weekday1 = Monday,Weekday2 = Tuesday,Weekday4;
    
    int main()
    {
        enum Week Weekday3 = Friday;
        int Weekday5 = Saturday;
        Weekday4 = Sunday;
        
        printf("Monday     = %d
    ",Weekday1);
        printf("Tuesday    = %d
    ",Weekday2);
        printf("Friday     = %d
    ",Weekday3);
        printf("Saturday   = %d
    ",Weekday5);
        printf("Sunday     = %d
    ",Weekday4);
    
        return 0;
    }

    输出结果如下:

    接下来使用typedef

    #include <stdio.h>
    
    typedef enum Week  //这个Week可以不写
    {
        Monday = 1, 
        Tuesday   , 
        Wednesday , 
        Thursday  , 
        Friday    , 
        Saturday  , 
        Sunday    
    }Weekday,Zhou;
    
    
    int main()
    {
        enum Week Weekday3 = Friday;
        int Weekday5       = Saturday;
        Weekday Weekday4   = Sunday;
        Zhou Weekday2      = Tuesday; 
    
    //  printf("Monday     = %d
    ",Weekday1);
        printf("Tuesday    = %d
    ",Weekday2);
        printf("Wednesday  = %d
    ",Wednesday);
        printf("Friday     = %d
    ",Weekday3);
        printf("Saturday   = %d
    ",Weekday5);
        printf("Sunday     = %d
    ",Weekday4);
    
        return 0;
    }

    输出结果如下:

    枚举变量(Monday、Tuesday等)只能为右值

    不能使用这种方法将其赋值

    Monday = 18;  //错误的做法

  • 相关阅读:
    [Python] Unofficial Windows Binaries for Python Extension Packages
    [SublimeText] 之 Packages
    [Windows] Windows 8.x 取消触摸板切换界面
    [Shell] Backtick vs $() 两种方式内嵌值
    [OSX] 在 OS X 中安装 MacPorts 指南
    [OSX] 使用 MacPorts 安装 Python 和 pip 指南
    关于 g++ 编译器
    梦想成真,喜获微软MVP奖项,微软MVP FAQ?
    拥抱.NET Core,如何开发一个跨平台类库 (1)
    拥抱.NET Core,学习.NET Core的基础知识补遗
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12469207.html
Copyright © 2011-2022 走看看