c语言枚举类型 c语言枚举类型占几个字节
2024-11-10 09:55 - 立有生活网
enum在c语言中是什么意思?
enum在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
和数组一样,是一组数据或者字符串,只不过所有的只都得枚举(每个写出来),用时和数组一样,不允许出现枚举以外的数据或者字符串。
仅供参考。
它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
如果一个变量只有几种可能的值,可以定义为枚举(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年长沙市经开中等职业学校招生简章公办还是民办师资怎么样地···