c言语enum是什么意思 (c言语程序设计)
本文目录导航:
c言语enum是什么意思
c言语enum意思是枚举类型,属于c言语中的一种数据类型。
在“枚举”类型的定义中罗列出一切或许的取值,被说明为该“枚举”类型的变量取值不能超越定义的范畴。
枚举类型是一种基本数据类型,而不是一种结构类型,由于它不能再合成为任何基本类型。
裁减资料:
c言语enum枚举值是常量,不是变量。
不能在程序中用赋值语句再对它赋值。
c言语enum枚举元素自身由系统定义了一个示意序号的数值,从0开局顺序定义为0,1,2…。
如在weekday中,sun值为0,mon值为1,sat值为6。
只能把c言语enum枚举值赋予枚举变量,不能把元素的数值间接赋予枚举变量。
如必定要把数值赋予枚举变量,则必定用强迫类型转换。
C言语中的枚举类型
在C言语中,枚举类型是一种不凡的数据类型,它准许你定义一个变量,该变量的值只能是几个预约义的选项之一。
枚举类型的申明以 `enum` 主要字开局。
例如,你可以定义一个名为 `weekday` 的枚举类型,它蕴含了 `sun`、`mon`、`tue`、`wed`、`thu`、`fri` 和 `sat` 这七个枚举元素。
这些元素在申明时自动从0开局赋值,依次递增。
```cenum weekday {sun, mon, tue, wed, thu, fri, sat};```或许,你也可以在申明时为每个枚举元素指定详细的值:```cenum weekday {sun = 1, mon = 2, tue = 3, wed = 4, thu = 5, fri = 6, sat = 7};```枚举元素在C言语中被视为常量,因此你不能给它们赋值,如 `sun = 7;` 是失误的。
每个枚举元素都有自己的值,这个值从0开局智能递增,除非你在申明时指定了值。
枚举值可以用于比拟和判别,例如:```cif (day == mon) {// ...}```但是,你不能间接将一个整数赋值给枚举变量,例如 `workday = 1;` 是失误的,由于 `workday` 是一个枚举类型,而 `1` 是一个整数类型。
为了将整数赋值给枚举变量,你须要启动类型转换:```cworkday = (enum weekday)1;```这样的操作将整数1转换为 `mon`,由于它在 `weekday` 枚举中的值。
C言语枚举类型是什么意思?
枚举类型C言语或C++的一种结构类型,它用于申明一组命名的常数。
\x0d\x0a(1)枚举的申明:枚举申明用于申明新的枚举类型。
\x0d\x0a访问修辞符 enum 枚举名:基础类型 \x0d\x0a{ \x0d\x0a枚举成员 \x0d\x0a} ;\x0d\x0a基础类型必定能够示意该枚举中定义的一切枚举数值。
枚举申明可以显式地申明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。
没有显式地申明基础类型的枚举申明象征着所对应的基础类型是 int。
\x0d\x0a(2)枚举成员 \x0d\x0a枚举成员是该枚举类型的命名常数。
恣意两个枚举成员不能具备相反的称号。
每个枚举成员均具无关系联的常数值。
此值的类型就是枚举的基础类型。
每个枚举成员的常数值必定在该枚举的基础类型的范畴之内。
\x0d\x0a示例: \x0d\x0apublic enum TimeofDay:uint \x0d\x0a{ \x0d\x0aMorning=-3, \x0d\x0aAfternoon=-2, \x0d\x0aEvening=-1 \x0d\x0a} ;\x0d\x0a发生编译时失误,要素是常数值 -1、-2 和 _3 不在基础整型 uint 的范畴内。
\x0d\x0a(3)枚举成员自动值 \x0d\x0a在枚举类型中申明的第一个枚举成员它的默值为零。
\x0d\x0a以后的枚举成员值是将前一个枚举成员(依照文本顺序)的值加 1 获取的。
这样参与后的值必定在该基础类型可示意的值的范畴内;否则,会发生编译时失误。
\x0d\x0a示例: \x0d\x0apublic enum TimeofDay:uint \x0d\x0a{ \x0d\x0aMorning, \x0d\x0aAfternoon, \x0d\x0aEvening \x0d\x0a} ;\x0d\x0aMorning的值为0,Afternoon的值为1,Evening的值为2。
\x0d\x0a(4)为枚举成员显示赋值 \x0d\x0a准许多个枚举成员有相反的值. \x0d\x0a没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1. \x0d\x0a示例 \x0d\x0apublic enum Number \x0d\x0a{ \x0d\x0aa=1, \x0d\x0ab, \x0d\x0ac=1, \x0d\x0ad \x0d\x0a} ;\x0d\x0ab的值为2,d的值为2. \x0d\x0a留意:以上枚举值都不能超越它的基础类型范畴。
否则会报错. \x0d\x0a(5)枚举类型与基础类型的转换 \x0d\x0a基础类型不能隐式转换为枚举类型 \x0d\x0a枚举类型也不能隐式转换为基础类型 \x0d\x0a示例: \x0d\x0apublic enum Number \x0d\x0a{ \x0d\x0aa, \x0d\x0ab, \x0d\x0ac, \x0d\x0ad \x0d\x0a} ;\x0d\x0aclass Test \x0d\x0a{ \x0d\x0apublic static void Main() \x0d\x0a{ \x0d\x0aint i=Number.a;//失误,要强迫类型转换(int)Number.a \x0d\x0aNumber n; \x0d\x0an=2 //失误,要强迫类型转换(Number)2 \x0d\x0a} \x0d\x0a} \x0d\x0a(6)类型 \x0d\ 类型是一切枚举类型的形象基类,并且从 承袭的成员在任何枚举类型中都可用。
\x0d\ 自身不是枚举类型。
相反,它是一个类类型,一切枚举类型都是从它派生的。
\x0d\ 从类型 派生 \x0d\x0a(7)经常使用枚举类型 \x0d\x0ausing System; \x0d\x0apublic enum TimeofDay \x0d\x0a{ \x0d\x0aMorning, \x0d\x0aAfternoon, \x0d\x0aEvening \x0d\x0a} ;\x0d\x0aclass Test \x0d\x0a{ \x0d\x0astatic void WriteGreeting(TimeofDay timeofDay) \x0d\x0a{ \x0d\x0aswitch(timeofDay) \x0d\x0a{ \x0d\x0acase : \x0d\(good morning); \x0d\x0abreak; \x0d\x0acase : \x0d\(good afternoon); \x0d\x0abreak; \x0d\x0acase : \x0d\(good evening); \x0d\x0abreak; \x0d\x0a} \x0d\x0a} \x0d\x0astatic void Main() \x0d\x0a{ \x0d\x0aWriteGreeting(); \x0d\x0aWriteGreeting(); \x0d\x0aWriteGreeting(); \x0d\x0a} \x0d\x0a}