当前位置:首页 » 编程语言 » c语言枚举常量要求
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言枚举常量要求

发布时间: 2022-09-24 09:11:29

A. c语言枚举类型怎么用

枚举类型定义时,定义的是可以枚举的常量,常量符号的值在定义枚举时已经初始化完成。
有没有枚举变量都不影响已经存在的可枚举常量,
定义枚举变量将来也是要赋值某一枚举常量的。

比如:
WeekTypedef day=Monday;

B. C语言的枚举类型知识

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

在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 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) {…}

if (day>mon) {…}

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

C 语言教程 ?216?

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

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 thu: printf("thursday/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);

因为枚举常量 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

};

(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,

wednesday,

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,

wednesday,

thursday,

friday

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

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

enum workday中的workday可以省略:

typedef enum

{

saturday,

sunday = 0,

monday,

tuesday,

wednesday,

thursday,

friday

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

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


C. C语言里面的常量是什么

C语言里面的常量是指不会变化的常数或编码,例如圆周率3.14就可以定义为一个常量。

“常量”的广义概念是“不变化的量”,例如:在计算机程序运行时,不会被程序修改的量;数学函数中的某一个量,例如每一个具体的圆的半径、直径数值;物理学中的靠近地面的重力加速度;真空中的光速数值;不同的微粒的各自的质量。

一层含义指它们的编码方法是不变的,但是严格来说“人为规定的某一种方法也可以因地制宜而人为改变,所以其本身数值大小‘不是‘常量’的内涵”。比如字符'A'无论在硬件、软件还是各种编程语言中,它的信息编码即为 “ 0x41”。

(3)c语言枚举常量要求扩展阅读:

C语言中,常量概念容易存在的错误解释:

在除了“C/C++”的一些高级程序语言中,“常量”可以被称作,“在一个信息变化过程中,始终不发生改变的量”,其可以是不随着时间变化的某些量的固定信息;也可以表示为某一数值的字符(或字符串),常被用来标识、测量和比较两者的差异。

但在 “C/C++语言中”,“常量”如果还用“运行过程中不变的量”来描述,就显得不太准确了,甚至是在具体使用时,这就是一个错误的概念。

在 “C/C++”中,定义“指针常量”时,根据“const ”的位置的不同,可以定义出几个不同的形式,虽然其看起来“符合常量的概念”,但是在实际运行中,其值或地址值是会发生变化的,所以本质还不是“常量概念”。

D. C语言中为什么枚举型常量必须是整数

枚举在C语言标准里面定义的就是整型,不管哪个编译器都遵循这个标准。

E. c语言枚举类型枚举常量枚举常量到底可不可以赋值

枚举常量 不可以赋值,但可以在定义的时候 指定值。 这个可以认为是定义值,而不是赋值。

比如

enum
{
a,
b=3,
c=100,
d
};

这里 a=0 b=3 c=100 d=101

但这个可不是赋值。



另外 如果是常变量, 理论上不可以赋值, 但C语言对此约束不大, 可以通过指针转换方式,强制赋值, 实际编程中不推荐这样做。

F. c语言枚举类型枚举常量

“给枚举变量赋值时,不能使用整数,workday=2
就是错误的”这句话是指你书中说明(1)中的话,这条语句是在定义之后(即大括号外)出现的。
“但是为什么上面可以black=5“这句话中的black=5是在定义的括号中出现的(属于枚举定义语句),枚举类型必须在定义的时候就赋值。只在此赋值一次。出现在定义外的语句都被认作是对枚举常量的重新赋值。而枚举常量在定义之外只能被当作表达式的右值,赋给其他变量,而不能出现在等号的左侧,因为这样相当于改变常量的值,自然是不正确的。

G. C语言简单的枚举问题

枚举常量名应该按标识符的命名规则:即不能使用关键字作为变量名,以字母或下划线开头,等等;或者可以使用 “枚举常量名=常量表达式” 的形式来表示。
你以常数(constant )作为枚举常量名,故报错。