枚举的含义、表示、规范、运用

本文详细介绍了枚举在C语言中的概念,包括其定义、规范(如先声明后定义或同时声明和定义)、初始化方式,以及如何将整数转换为枚举、在Switch语句中的使用和作为指针变量。同时探讨了枚举类型占用的字节大小问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举的含义

一组有共同特性的数据集合

枚举的表示

由关键字enum和枚举类型名称组成

枚举的规范

先声明枚举类型再定义枚举变量

 enum DAY//先声明枚举类型
{
  MON=1,TUE,WED,THU,FRI,SAT,SUN//枚举成员变量
 };
 enum DAY day;//再定义枚举变量

声明枚举类型的同时定义枚举变量

 enum DAY//声明枚举类型
{
  MON=1,TUE,WED,THU,FRI,SAT,SUN//枚举成员变量
 }day;//定义枚举变量

不指定枚举类型名而直接定义枚举变量

 enum//不指定枚举类型名
{
  MON=1,TUE,WED,THU,FRI,SAT,SUN//枚举成员变量
 }day;//定义枚举变量

用typedef定义枚举类型别名

第一种

 typedef enum workday//声明枚举类型
{
  saturday,
  sunday = 0,
  monday,
  tuesday,
  wednesday,
  thursday,
  friday
 } workday;//用typedef定义枚举类型别名
 workday today, tomorrow;//定义枚举变量

第二种

 typedef enum workday//声明枚举类型
{
  saturday,
  sunday = 0,
  monday,
  tuesday,
  wednesday,
  thursday,
  friday
 };//不定义枚举类型别名
 workday today, tomorrow;//定义枚举变量

枚举变量的初始化

先声明枚举变量再赋值给枚举变量

#include<stdio.h>
enum DAY {MON=1,TUE,WED,THU,FRI,SAT,SUN};//声明枚举类型
 void main()//主函数
{  
  enum DAY yesterday, today, tomorrow;//声明枚举变量
  yesterday = MON;//赋值给枚举变量 下同
  today     = TUE;
  tomorrow  = WED;
  printf("%d %d %d \n", yesterday, today, tomorrow);
 }
1
2
3

解释以上:由以上输出结果可知,枚举类型内第一个枚举成员变量的默认值为整型的0,如果第一个枚举成员变量设置了某值,那么以这个设置值为准,后续枚举成员变量的值在前一个枚举成员变量上加1。

声明枚举变量同时赋值给枚举变量

#include<stdio.h>
enum DAY {MON=1,TUE,WED,THU,FRI,SAT,SUN};//声明枚举类型
 void main()//主函数
{
  enum DAY yesterday = MON, today = TUE,tomorrow = WED;//声明枚举变量同时赋值给枚举变量
  printf("%d %d %d \n", yesterday, today, tomorrow);
 }
1
2
3

声明枚举类型同时定义枚举变量再赋值给枚举变量

#include<stdio.h>
enum DAY {MON=1,TUE,WED,THU,FRI,SAT,SUN}yesterday,today,tomorrow;//声明枚举类型同时定义枚举变量
 void main()//主函数
{
  yesterday = MON;//赋值给枚举变量 下同
  today     = TUE;
  tomorrow  = WED;
  printf("%d %d %d \n", yesterday, today, tomorrow);
 }
1
2
3

声明枚举类型定义枚举变量赋值给枚举变量同时进行

#include<stdio.h>
enum DAY {MON=1,TUE,WED,THU,FRI,SAT,SUN}yesterday  = MON,today = TUE,tomorrow = WED;//声明枚举类型定义枚举变量赋值给枚举变量同时进行
 void main()//主函数
{
  printf("%d %d %d \n", yesterday, today, tomorrow);
 }
1
2
3

枚举的运用

将整数型转换为枚举型

#include <stdio.h>
#include <stdlib.h>
 int main()
{ 
  enum day//声明枚举类型
 {
   saturday,
   sunday,
   monday,
   tuesday,
   wednesday,
   thursday,
   friday
  } workday;
   int a = 1;
   enum day weekend;//定义枚举变量
   weekend = ( enum day ) a;//将整数型变量转换为枚举变量
   //weekend = a; //错误
   printf("weekend:%d",weekend);
   return 0;
  }
weekend:1

在Switch语句中使用

#include <stdio.h>
#include <stdlib.h>
 int main()
{
  enum color { red=1, green, blue };//声明枚举类型
  enum  color favorite_color;//定义枚举变量
  /* 用户输入数字来选择颜色 */
  printf("请输入你喜欢的颜色: (1.red, 2.green, 3.blue): ");
  scanf("%u",&favorite_color);
  /* 输出结果 */
  switch (favorite_color)
 {
   case red:
            printf("你喜欢的颜色是红色");
            break;
   case green:
            printf("你喜欢的颜色是绿色");
            break;
   case blue:
            printf("你喜欢的颜色是蓝色");
            break;
   default:
            printf("你没有选择你喜欢的颜色");
  }
  return 0;
 }
请输入你喜欢的颜色: (1.red,2.green,3.blue):1
你喜欢的颜色是红色

作为指针变量

计算字节大小

#include <stdio.h>
 enum escapes//声明枚举类型
{ 
  BELL      = '\a',
  BACKSPACE = '\b',
  HTAB      = '\t',
  RETURN    = '\r',
  NEWLINE   = '\n', 
  VTAB      = '\v',
  SPACE     = ' '
 };
 enum BOOLEAN { FALSE = 0, TRUE } match_flag;//定义枚举变量
 void main()
{
  printf("%d bytes \n", sizeof(enum escapes));//4 bytes
  printf("%d bytes \n", sizeof(escapes));//4 bytes
  printf("%d bytes \n", sizeof(enum BOOLEAN));//4 bytes
  printf("%d bytes \n", sizeof(BOOLEAN));//4 bytes
  printf("%d bytes \n", sizeof(match_flag));//4 bytes
  printf("%d bytes \n", sizeof(SPACE));//4 bytes
  printf("%d bytes \n", sizeof(NEWLINE));//4 bytes
  printf("%d bytes \n", sizeof(FALSE));//4 bytes
  printf("%d bytes \n", sizeof(0));//4 bytes
 }
4 bytes
4 bytes
4 bytes
4 bytes
4 bytes
4 bytes
4 bytes
4 bytes
4 bytes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值