欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言练习笔记 ~ 枚举类型

程序员文章站 2022-04-24 11:07:49
...


define 一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举。

例1 枚举类型举例

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning(disable:4996)

struct man
{
    char name[20];
    int age;
    int sex;
};

// #define MAN 1   //这样一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举
// #define WOMAN 0
enum sex {man, woman};

enum spectrum {red, yellow, green, blue, white, black}; //定义了很多个 int 型常量


 int main () 
{ 
   struct man m;
   strcpy(m.name, "tom");
   m.age = 20;
//    m.sex = MAN;
  
  /*  enum sex s;  
   s = man;
   m.sex = s;  //这三句可以等效为一句  m.sex = man;
 */  
    m.sex = man;

   enum spectrum color;
   color = red;
   printf("red=%d\n",red);//输出的是red的默认值,默认值是从0开始的
   printf("blue=%d\n",blue);//输出的是blue的默认值
   
   return 0;

}

输出结果:
C语言练习笔记 ~ 枚举类型

例2 改变默认值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning(disable:4996)

struct man
{
    char name[20];
    int age;
    int sex;
};

// #define MAN 1   //这样一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举
// #define WOMAN 0
enum sex {man, woman};

enum spectrum {red = 100, yellow, green, blue, white, black}; //定义了很多个 int 型常量


 int main () 
{ 
   struct man m;
   strcpy(m.name, "tom");
   m.age = 20;
//    m.sex = MAN;
  
  /*  enum sex s;  
   s = man;
   m.sex = s;  //这三句可以等效为一句  m.sex = man;
 */  
    m.sex = man;

   enum spectrum color;
   color = red;
   printf("red=%d\n",red);//输出的是red的默认值,默认值是可以改变的
   printf("blue=%d\n",blue);//输出的是blue的默认值
   
   return 0;
}

输出结果:
C语言练习笔记 ~ 枚举类型
还可以这样改:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning(disable:4996)

struct man
{
    char name[20];
    int age;
    int sex;
};

// #define MAN 1   //这样一次只能定义1个常量,如果需要同时定义多个常量,则需要使用枚举
// #define WOMAN 0
enum sex {man, woman};

enum spectrum {red = 100, yellow = 12, green, blue, white, black}; //定义了很多个 int 型常量


 int main () 
{ 
   struct man m;
   strcpy(m.name, "tom");
   m.age = 20;
//    m.sex = MAN;
  
  /*  enum sex s;  
   s = man;
   m.sex = s;  //这三句可以等效为一句  m.sex = man;
 */  
    m.sex = man;

   enum spectrum color;
   color = red;
   printf("red=%d\n",red);//输出的是red的默认值,默认值是可以改变的
   printf("blue=%d\n",blue);//输出的是blue的默认值
   
   return 0;

}

输出结果:
C语言练习笔记 ~ 枚举类型
从上述结果可以看出:没有改变默认的常量从改变的常量开始,+1往后顺延。

注意:枚举是常量,不是变量,不能取地址,也不能出现在等号左边。

C语言练习笔记 ~ 枚举类型上面第一个不能取地址,第2个和第3个可以。

相关标签: 枚举类型