c语言枚举类型 c语言枚举类型占几个字节

2024-11-10 09:55 - 立有生活网

enum在c语言中是什么意思?

enum在c语言中是枚举类型的意思。

c语言枚举类型 c语言枚举类型占几个字节c语言枚举类型 c语言枚举类型占几个字节


c语言枚举类型 c语言枚举类型占几个字节


enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。

在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

相关延伸:enum赋值和使用:

枚举类型在使用中有以下规定:

1、枚举值是常量,不是变量。不能在程序中}}用赋值语句再对它赋值。

2、枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,sat值为6。

只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如一定要把数值赋予枚举变量,则必须用强制类型转换。

enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。

C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。

例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。

赋值和使用

枚举类型在使用中有以下规定:

1、枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

2、枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,sat值为6。只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如一定要把数值赋予枚举变量,则必须用强制类型转换。

以上内容参考上面声明了一个枚举类型weekday,花括号中sun,mon,…,sat等称为枚举元素或枚举常量。:

c语言枚举类型enum用法

mon=2;

c语言枚举类型enum用法如下:

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

(1) 枚举型是一个,中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。

(2)DAY是一个标识符,可以看成这个的名字,是一个可选项,即是可有可无的项。

(3) 个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。在当前值没有赋值的情况下,枚举类型的当前值总是前一个值+1.

(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。

(5) 枚举型是预处理指令#define的替代。

(6) 类型定义以分号;结束。

enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值。

我们可以将枚举理解为编译阶段的宏,使用格式:

enum typeName { valueName1, valueName2, valueName3, ...... };

typeName是枚举类型的名字,花括号里面的元素(枚举成员)是常量而不是变量,这个一定要搞清楚,因为枚举成员的是常量,所以不能对它们赋值,只能将它们的值赋给其他的变量。

枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。

enum在c语言中是什么意思?

在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 C 语言中对这样取值比较特殊的变量可以定义为枚举类型。所谓枚举是指将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。

enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。

C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。

例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。

数据类型关键字

short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)

long:修在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。饰int,长整型数据,可省略被修饰的int。(K&R时期引入)

long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)

signed:修饰整型数据,有符号数据类型。(C89标准新增)

unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)

restrict:用于限定和约束指针,并表明指针是访问一个数据对象的初始且的方式。(C99标准新增)

c语言中的枚举型什么意思

C 语言教程 ?216?

就是你声明的这个枚举变量的值,只能取其中的东西,比如:

enum

{monday,tuesday,wednesday,thursday,friday}

weekday;

那weekday这个变脸的值只能是{}中的值。(他们分别对应数字0,1,2,3,4,因为枚举型变量也是整型)

它是一种数据类型,用来定义一组常量。例如

enum student{LIly,LUcy,Tom,Jersey}

在程序中就可以通过student.LIly引用它,此时LIly,LUcy,Tom,Jersey的值分别为0,1,2,3。枚举类型里的值,在没有指定的情况下,个默认为0,往后的自增一。例子如上。

在有指定的情况下如enum student{LIly,LUcy=3,Tom,Jersey}

此时LIly,LUcy,Tom,Jersey的值分别为0,3,4,5。总结起来就是,有指定值时就用指定值,没有就用默认值,往后的变量自增一。

一个变量可能的取值都知道,就可以把它定义为枚举型,然后把变量的值一一列出来,令变量的值只限于列举出来的值的范围内。

比如有个变量date表示周几,enum date{Mon,Tues,Wed,Thur,Fri,Sat,Sun}

就是你变量的值只能是你定义的枚举型中定义的数值。比如enum name{赵,钱,孙,李};你name A的值只能为{赵,钱,孙,李}中的一个

给出正确代码,自己做对比。#include#define m 100void arrout(int ,int);int arrin(int );void main() //------->此处主函数类型为void{ int s[m],k; k=arrin(s); arrout(s,k);}int arrin(int a){ int i,x; i=0; scanf("%d",&x); while(x>0) { (a+i)=x; i++; scanf("%d",&x); } return i;}void arrout(int a,int n){ int i; for(i=0;i三目运算格式错误,中间是冒号,少case thu: printf("thursday/n");break;了个括号自己对比 printf("n"); }}

和数组一样,是一组数据或者字符串,只不过所有的只都得枚举(每个写出来),用时和数组一样,不允许出现枚举以外的数据或者字符串。

仅供参考。

它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。

如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。声明枚举类型用enum开头。

例如

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

表示这个类型的变量的值只能是以上7个值之一。它们是用户自己定义的标识符。

就是一堆常量放在一起,方便编程

C语言枚举类型是什么意思?

printf("%d,%d,%d",a,b,c);

枚举类型C语言或C++的一种构造类型,它用于声明一组命名的常数。 x0dx0a(1)枚举的声明:枚举声明用于声明新的枚举类型。 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:x0dx0a访问修辞符 enum 枚举名:基础类型 x0dx0a{ x0dx0a枚举成员 x0dx0a} ;x0dx0a基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、yte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。 x0dx0a(2)枚举成员 x0dx0a枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。 x0dx0a示例: x0dx0apublic enum TimeofDay:uint x0dx0a{ x0dx0aMorning=-3, x0dx0aAfternoon=-2, x0dx0aEvening=-1 x0dx0a} ;x0dx0a产生编译时错误,原因是常数值 -1、-2 和 _3 不在基础整型 uint 的范围内。 x0dx0a(3)枚举成员默认值 x0dx0a在枚举类型中声明的个枚举成员它的默值为零。 x0dx0a以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。 x0dx0a示例: x0dx0apublic enum TimeofDay:uint x0dx0a{ x0dx0aMorning, x0dx0aAfternoon, x0dx0aEvening x0dx0a} ;x0dx0aMorning的值为0,Afternoon的值为1,Evening的值为2。 x0dx0a(4)为枚举成员显示赋值 x0dx0a允许多个枚举成员有相同的值. x0dx0a没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1. x0dx0a示例 x0dx0apublic enum Number x0dx0a{ x0dx0aa=1, x0dx0ab, x0dx0ac=1, x0dx0ad x0dx0a} ;x0dx0ab的值为2,d的值为2. x0dx0a注意:以上枚举值都不能超过它的基础类型范围。否则会报错. x0dx0a(5)枚举类型与基础类型的转换 x0dx0a基础类型不能隐式转换为枚举类型 x0dx0a枚举类型也不能隐式转换为基础类型 x0dx0a示例: x0dx0apublic enum Number x0dx0a{ x0dx0aa, x0dx0ab, x0dx0ac, x0dx0ad x0dx0a} ;x0dx0aclass Test x0dx0a{ x0dx0apublic static void Main() x0dx0a{ x0dx0aint i=Number.a;//错误,要强制类型转换(int)Number.a x0dx0aNumber n; x0dx0an=2 //错误,要强制类型转换(Number)2 x0dx0a} x0dx0a} x0dx0a(6)System.Enum类型 x0dx0aSystem.Enum 类型是所有枚举类型的抽象基类,并且从 System.Enum 继承的成员在任何枚举类型中都可用。 x0dx0aSystem.Enum 本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。 x0dx0aSystem.Enum 从类型 System.ValueType派生 x0dx0a(7)使用枚举类型 x0dx0ausing System; x0dx0apublic enum TimeofDay x0dx0a{ x0dx0aMorning, x0dx0aAfternoon, x0dx0aEvening x0dx0a} ;x0dx0aclass Test x0dx0a{ x0dx0astatic void WriteGreeting(TimeofDay timeofDay) x0dx0a{ x0dx0aswitch(timeofDay) x0dx0a{ x0dx0acase TimeofDay.Morning: x0dx0aConsole.WriteLine("good morning"); x0dx0abreak; x0dx0acase TimeofDay.Afternoon: x0dx0aConsole.WriteLine("good afternoon"); x0dx0abreak; x0dx0acase TimeofDay.Evening: x0dx0aConsole.WriteLine("good ning"); x0dx0abreak; x0dx0a} x0dx0a} x0dx0astatic void Main() x0dx0a{ x0dx0aWriteGreeting(TimeofDay.Morning); x0dx0aWriteGreeting(TimeofDay.Evening); x0dx0aWriteGreeting(TimeofDay.Afternoon); x0dx0a} x0dx0a}

C语言的枚举类型知识

wednesday,

导语:定义一个变量是枚举类型,可以先定义一个枚举类型名,然后再说明这个变量是该枚举类型。下面是C语言的枚举类型知识,欢迎阅读:

例如:

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

定义了一个枚举类型名 enum weekday,然后定义变量为该枚举类型。例如:

enum weekday day;

当然,也可以直接定义枚举类型变量。例如:

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

其中,sum,mon,…,sat 等称为枚举元素或枚举常量,它们是用户定义的标识符。

需要说明的有以下几点。

① 枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。

② 枚举元素作为常量,它们是有值的,C 语言在编译时按定义的顺序使它们的值为,1,2,…。

在上面的说明中,sun 的值为 0,mon 的值为 1,…sat 的.值为 6,如果有赋值语句

day=mon;

则 day 变量的值为 1。当然,这个变量值是可以输出的。例如:

printf ("%d",day);

将输出整数 1。

如果在定义枚举类型时指定元素的值,也可以改变枚举元素的值。例如:

enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat}day;

这时,sun 为 7,mon 为 1,以后元素顺次加 1,所以 sat 就是 6 了。

③ 枚举值可以用来作判断。例如:

if (day>mon) {…}

枚举值的比较规则是:按其在说明时的顺序号比较,如果说明时没有人为指定,则个枚举元素的值认作 0。例如,mon>sun,sat>fri。

④ 一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值。例如:

day=(enum weekday)2;

这个赋值的意思是,将顺序号为 2 的枚举元素赋给 day,相当于workday=tue;

【例 11.6】从键盘输入一个整数,显示与该整数对应的枚举常量的英文名称。

# include

void main( )

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

int k;

printf("input a number(0--6)");

scanf("%d",&k);

day=(enum weekday)k;

switch(day)

{case sun: printf("sunday/n");break;

case mon: printf("monday/n");break;

case tue: printf("tuesday/n");break;

case wed: printf("wednesday/n");break;

case fri: printf("friday/n");break;

case sat: printf("satday/n");break;

default: printf("input error/n");break;

程序运行结果为:

input a number(0--6)1

monday

在该程序中,枚举常量与枚举变量可以进行比较,但要输出枚举常量对应的英文单词,不能使用以下语句:

printf(" %s",mon);

在使用枚举变量时,主要关心的不是它的值的大小,而是其表示的状态。

注:以下全部代码的执行环境为VC++ 6.0

在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:

#define MON 1

#define TUE 2

#define WED 3

#define THU 4

#define FRI 5

#define SAT 6

#define SUN 7

在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种新的数据类型叫枚举型。

1. 定义一种新的数据类型 - 枚举型

以下代码定义了这种新的数据类型 - 枚举型

enum DAY

{MON=1, TUE, WED, THU, FRI, SAT, SUN

}default:break;;

(1) 枚举型是一个,中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。

(2) DAY是一个标识符,可以看成这个的名字,是一个可选项,即是可有可无的项。

(3) 个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。

(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。

(5) 枚举型是预处理指令#define的替代。

(6) 类型定义以分号;结束。

2. 使用枚举类型对变量进行声明

新的数据类型定义完成后,它就可以使用了。我们已经见过最基本的数据类型,如:整型int, 单精度浮点型float, 双精度浮点型double, 字符型char, 短整型short等等。用这些基本数据类型声明变量通常是这样:

char a; //变量a的类型均为字符型char

char letter;

int x,

y,

z; //变量x,y和z的类型均为整型int

int number;

double m, n;

double result; //变量result的类型为双精度浮点型double

既然枚举也是一种数据类型,那么它和基本数据类型一样也可以对变量进行声明。

方法一:枚举类型的定义和变量的声明分开

enum DAY

{MON=1, TUE, WED, THU, FRI, SAT, SUN

};

enum DAY yesterday;

enum DAY today;

enum DAY tomorrow; //变量 tomorrow的类型为枚举型enum DAY

enum DAY good_day, bad_day; //变量good_day和bad_day的类型均为枚举型enum DAY

方法二:类型定义与变量声明同时进行:

enum //跟个定义不同的是,此处的标号DAY省略,这是允许的。

{saturday,

sunday = 0,

monday,

tuesday,

thursday,

friday

} workday; //变量workday的类型为枚举型enum DAY

enum week { Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days; //变量days的类型为枚举型enum week

enum BOOLEAN { false, true } end_flag, match_flag; //定义枚举类型并声明了两个枚举型变量

方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明:

typedef enum workday

{saturday,

sunday = 0,

monday,

tuesday,

thursday,

friday

} workday; //此处的workday为枚举型enum workday的别名

workday today, tomorrow; //变量today和tomorrow的类型为枚举型workday,也即enum workday

enum workday中的workday可以省略:

typedef enum

{saturday,

sunday = 0,

monday,

tuesday,

thursday,

friday

} workday; //此处的workday为枚举型enum workday的别名

workday today, tomorrow; //变量today和tomorrow的类型为枚举型workday,也即 enum workday。

enum在c语言中是什么意思?

enum在c语言中是枚举类型的意思,枚举类型的定义形式为enum typeName。

ja使用enum定义常量类型,常量本身带有类型信息,可以使用==比较。enum定义的类型是class,继承自ja.lang.Enum,所有常量都是引用实例,常量可用于switch语句。

name()获取常量定义的字符串,注意不要使用toString(),ordinal()返回常量定义的顺序(无实质意义),可以为enum类编写构造方法、字段、方法,构造方法必须为private。

新的数据类型定义完成后,它就可以使用了。我们已经见过最基本的数据类型,如:整型int, 单精度浮点型float, 双精度浮点型double, 字符型char, 短整型short等等。

枚举型是一个,中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号隔开。

DAY是一个标识符,可以看成这个的名字,是一个或者为:可选项,即是可有可无的项。该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。

可以人为设定枚举成员的值,从而自定义某个范围内的整数。

枚举型是预处理指令#define的替代。

C语言枚举类型,知道这些你就会了

有了枚举变量,就可以把列表中的值赋给它:

以每周七天为例,我们可以使用 #define 命令来给每天指定一个名字:

#define 命令虽然能解决问题,但也带来了不小的副作用,导致宏名过多,代码松散,看起来总有点不舒服。C语言提供了一种 枚举(Enum)类型 ,能够列出所有可能的取值,并给它们取一个名字。

enum 是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的用途; typeName 是枚举类型的名字; valueName1, valueName2, valueName3, ...... 是每个值对应的名字的列表。注意的 ; 不能少。

例如,列出一个星期有几天:

可以看到,我们仅仅给出了名字,却没有给出名字对应的值,这是因为枚举值默认从 0 开始,往后逐个加 1(递增);也就是说,week 中的 Mon、Tues ...... Sun 对应的值分别为 0、1 ...... 6。

我们也可以给每个名字都指定一个值:

更为简单的方法是只给个名字指定值:

这样枚举值就从 1 开始递增,跟上面的写法是等效的。

枚举是一种类型,通过它可以定义枚举变量:

也可以在定义枚举类型的同时定义变量:

或者:

Mon、Tues、Wed 这些名字都被替换成了对应的数字。这意味着,Mon、Tues、Wed 等都不是变量,它们不占用数据区(常量区、全局数据区、栈区和堆区)的内存,而是直接被编译到命令里面,放到代码区,所以不能用 & 取得它们的地址。这就是枚举的本质。

枚举类型变量需要存放的是一个整数,它的长度和 int 相enum weekday同。

C语言中关于枚举类型

if (day==mon) {…}

1.enum

因为枚举常量 mon 为整数值,而非字符串。

枚举的定义

枚举类型定义的一般形式为:

enum 枚举名{ 枚举值表 };

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

例如:

2.

枚举变量的说明

如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

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

enum weekday a,b,c;

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

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

枚举类型在使用中有以下规定:

a.

枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

例如对枚举weekday的元素再作以下赋值:

sun=5;

sun=mon;

都是错误的。

b.

枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。

int main(){

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

a=sun;

b=mon;

c=tue;

return 0;

}说明:

a=sum;

b=mon;

是正确的。而:

a=0;

b=1;

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

如:a=(enum

weekday)2;

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

a=tue;

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

int 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])

{case a:printf(" %2d %ct",i,'a'); break;

case b:printf(" %2d %ct",i,'b'); break;

case c:printf(" %2d %ct",i,'c'); break;

case d:printf(" %2d %ct",i,'d'); break;

printf("n");

return 0;

}

已经拿证了怎么查询驾考成绩 车管所个人档案

已拿到驾照怎么查询之前考过了成绩 科目一 已经拿证了怎么查询驾考成绩 车管所个人档案查询系统 已经拿证了怎么查询驾考成绩 车管所个人档案查询系统 到科目四 都是可以当场知道成绩的,科目···

大学四年个人总结(大学生个人总结300字)

四年的大学生活总结范文 工作 总结 可以全面地,系统地了解以往的工作情况,可以正确认识以往工作中的优缺点。下面是我给大家精心挑选的工作总结,希望能帮助到大家! 大学四年个人总结(大···

长沙职业学校招生(长沙职业学校招生学费)

本文目录一览: 1、 2022年长沙卫生职业学院招生章程 2、 长沙职业技术学院单招录取人数 3、 长沙市中专学校及其招生专业? 4、 2023年长沙市经开中等职业学校招生简章公办还是民办师资怎么样地···