1、枚举类型定义

  • 定义

    • 枚举类型是被当做 int 或者 unsigned int 类型来处理的
    • 第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1

      1. // 第一个枚举成员默认整型0,后续的依次加1
      2. enum DAY{
      3. MON,TUE,WED,THU,FRI,SAT,SUN
      4. };
      5. // spring=0 summer=3 autumn=4 winter=5
      6. enum Season{
      7. spring,summer=3,autumn,winter
      8. };

2、枚举变量定义

  • 方式1:先定义枚举类型,再定义枚举变量

    1. enum DAY{
    2. MON=1, TUE, WED, THU, FRI, SAT, SUN
    3. };
    4. enum DAY day;
    5. day = MON;
    6. printf("%d",day);
  • 方式2:定义枚举类型的同时定义枚举变量

    1. enum DAY
    2. {
    3. MON=1, TUE, WED, THU, FRI, SAT, SUN
    4. } day;
    5. day = MON;
    6. printf("%d",day);
  • 方式3:省略枚举名称,直接定义枚举变量

    1. enum
    2. {
    3. MON=1, TUE, WED, THU, FRI, SAT, SUN
    4. } day;
    5. day = MON;
    6. printf("%d",day);

    3、枚举类型遍历

  • 连续的枚举遍历

    1. enum DAY
    2. {
    3. MON=1, TUE, WED, THU, FRI, SAT, SUN
    4. } day;
    5. // 遍历枚举元素
    6. for (day = MON; day <= SUN; day++) {
    7. printf("枚举元素:%d \n", day);
    8. }
  • 以下枚举类型不连续,这种枚举无法遍历。

    1. enum
    2. {
    3. ENUM_0,
    4. ENUM_10 = 10,
    5. ENUM_11
    6. };

    4、整型强转枚举

  • 强转

    1. enum day
    2. {
    3. saturday,
    4. sunday,
    5. monday,
    6. tuesday,
    7. wednesday,
    8. thursday,
    9. friday
    10. };
    11. int a = 1;
    12. enum day weekend = ( enum day ) a; //类型转换
    13. printf("weekend:%d",weekend);