首页 > 其他分享 >C语言中enum类型的全面解析,让你彻底掌握!

C语言中enum类型的全面解析,让你彻底掌握!

时间:2023-07-27 13:55:59浏览次数:42  
标签:变量 enum C语言 枚举 mon 类型 解析 weekday

一、枚举类型

在实际情况中,有一些变量的取值范围是有限的。打个比方,一周只有七天,一年有十二个月,一个班每星期有六门课程等等。将这些变量定义为整型、字符型或其他类型是不合适的。为此,C语言引入了一种称为“枚举”的类型。在“枚举”类型的定义中,列出了所有可能的取值,而该“枚举”类型的变量只能取这些值范围内的数值。

值得注意的是,枚举类型属于基本数据类型,而不是构造类型,因为它不能拆分为其他基本类型。

枚举类型的定义和枚举变量的声明

1. 枚举的定义

枚举类型的一般形式如下:

enum 枚举名{ 枚举值表 };

在枚举值表中列出所有可用的值,这些值也被称为枚举元素。

例如:

定义了一个名为weekday的枚举类型,它包含7个枚举值,代表一周中的七天。将变量声明为weekday类型时,其取值只能是这七天中的某一天。

2. 枚举变量的说明

枚举变量的说明可以通过不同的方式进行,包括先定义后说明、同时定义和说明,以及直接说明。

例如,对于变量a、b、c,它们被说明为表示"星期几"的枚举类型,可以采用以下三种方式之一:

方式一:

```c

enum weekday{ sun, mon, tue, wed, thu, fri, sat };

enum weekday a, b, c;

```

方式二:

```c

enum weekday{ sun, mon, tue, wed, thu, fri, sat } a, b, c;

```

方式三:

```c

enum { sun, mon, tue, wed, thu, fri, sat } a, b, c;

```

二、枚举类型变量的赋值和使用

在使用枚举类型时,需要遵循以下规定:

1. 枚举值是常量,而不是变量,因此不能在程序中使用赋值语句来对其进行更改。比如尝试对枚举类型"weekday"的元素进行以下赋值:sun=5; mon=2; sun=mon; 都是错误的。

2. 系统会自动为枚举元素定义表示序号的数值,从0开始依次为0、1、2……。所以,在"weekday"中,sun对应的值为0,mon对应的值为1,一直到sat对应的值为6。

【例】

main(){enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;  //学习交流群:558970390
c=tue;
printf("%d,%d,%d",a,b,c);
}

说明: 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:

a=sum;

b=mon;

是正确的。而:

a=0;

b=1;

是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。 如:

a=(enum weekday)2;

其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:

a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

【例】

main(){enum body
{ a,b,c,d } month[31],j;int i;
j=a;for(i=1;i<=30;i++){
month[i]=j;
j++;if(j>d) j=a;
}for(i=1;i<=30;i++){switch(month[i])
{casea:printf(" %2d %c\t",i,'a');break;caseb:printf(" %2d %c\t",i,'b');break;casec:printf(" %2d %c\t",i,'c');break;cased:printf(" %2d %c\t",i,'d');break;default:break;
}
}
printf("\n");
}

欢迎初学和进阶中的小伙伴。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以私信或者进入学习群跟我一起学习 助你早日成为一名优秀的程序员,想要学习更多知识可以关注我哦!

 

标签:变量,enum,C语言,枚举,mon,类型,解析,weekday
From: https://www.cnblogs.com/2467118965z/p/17584722.html

相关文章

  • 并发编程-FutureTask解析
    1、FutureTask对象介绍Future对象大家都不陌生,是JDK1.5提供的接口,是用来以阻塞的方式获取线程异步执行完的结果。在Java中想要通过线程执行一个任务,离不开Runnable与Callable这两个接口。Runnable与Callable的区别在于,Runnable接口只有一个run方法,该方法用来执行逻辑,但是并没有......
  • C语言中的二进制数、八进制数和十六进制数
    C语言是一门使用数字的编程语言,其中包括了8进制和16进制的数字表示方法。这两种表示方法都可以用于整数和字符类型。8进制表示法8进制数字以数字0(零)和前缀0开头表示。例如,八进制数012表示为十进制的10。以下是一些示例:intx=012;//八进制的12,等价于十进制的10inty=0......
  • 寻找解析注解的类
    1、直接搜索"注解名.class"以若依项目为例,我要寻找如下注解的解析情况/***自定义注解防止表单重复提交**@authorruoyi**/@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceRepeatSubmit{/***间隔......
  • C语言中的关系操作符
    C语言中的关系操作符C语言用于比较的表达式,称为关系表达式(relationalexpression),里面使用的运算符就称为"关系运算符"(relationaloperator),主要有下面6个。>大于运算符>=大于等于运算符<小于运算符<=小于等于运算符==相等运算符!=不相等运算符下面是一些例子。a==b;......
  • C语言中的逻辑操作符
    C语言中的逻辑操作符逻辑操作符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符。!:逻辑取反运算符(改变单个表达式的真假)。&&:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。||:或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)。注:C......
  • C语言基础
    主函数1.1main函数main函数参数一共有三个:1.intargc整型变量2.char*argv[]字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串3.char*envp[]字符串数组intmain(void)//无参数形式{return0;}intmain(intargc,char*argv[])//带形式参数{return0;}C语言程......
  • c语言学习9
    一、字符串字符:人能看得懂的符号或图案,在内存中以整数形式存储,根据ASCII码表中的对应关系显示出相应的符号或图案'\0'0空字符'0'48'A'65'a'97串:是一种数据结构,存储类型相同的若干个数据对于串型结构的处理是批量性的,会从头开始直到遇到结束标志......
  • java 解析map
    Java解析Map简介在Java中,解析Map是一项常见的任务。Map是一个键值对的集合,其中每个键都是唯一的,可以通过键来获取对应的值。解析Map的过程就是将Map中的键值对提取出来,并进行相应的操作。解析流程下面是解析Map的一般流程:步骤描述1创建一个新的Map对......
  • PHPJSON嵌套对象和数组的解析方法
    PHPJSON嵌套对象和数组的解析方法在PHP编程开发中,JSON是一种非常常用的数据格式。它具有简单、轻量和易于解析的特点,非常适合用于数据交换和存储。当我们处理JSON数据时,经常需要解析嵌套的对象和数组,本文将介绍几种解析方法。1.使用json_decode函数解析在PHP中,我们可以使用jso......
  • 基于C语言的P2P软件实现
    完整资料进入【数字空间】查看——搜索"writebug"摘要Peer-to-Peer网络毫无疑问是当今的热点技术主题。Napster和Gnutella的广泛使用证明了peer-to-peer应用的强大潜力。P2P(或者说peer-to-peer)网络是一种基于操作上下文的网络模型,任何一个节点都同时作为客户机和服务器。J......