日记大全

日记大全 > 句子大全

C语言枚举类型 如何定义和使用枚举变量(归纳 总结)

句子大全 2014-12-29 23:49:40
相关推荐

1 枚举类型

我们学习了结构体类型和共用体类型,它们都是用户自定义的数据类型,可以用来定义变量。那么,C语言也提供了“枚举类型”的定义,它的使用与结构体类型和共用体类型有些区别。枚举类型的定义格式如下:

enum 枚举类型名

{

枚举常量列表;

};

使用enum关键字定义枚举类型。注意,在大括号中,定义的枚举类型常量,或者称为:枚举元素。它们是一个常量,不是变量。所以,有如下的测试例子:

可以看到,我们定义了枚举类型:

enum test

{

a, b, c

};

枚举类型名称是 test,枚举类型中定义的常量列表是 a, b, c;这是一个常量列表,不是变量列表,所以,它们没有数据类型的定义。只写常量的名称。

而且,定义枚举类型,如果不给常量列表定义数值,那么,默认第一个常量的值从0开始,而且,往后每一个常量的值递增1。

所以,在a, b, c这样的常量列表中,第一个常量是a,它的值默认为0,然后,后面的常量,它们的值都是前一个常量的值增加1。

所以,常量b的值是常量a的值增加1,所以,常量b的值为1;常量c的值是常量b的值增加1,所以,常量c的值为2。

2 枚举类型变量定义和使用

枚举类型的定义和使用与结构体类型有很大的区别,如下是一个枚举类型的定义:

enum test

{

a, b, c

};

定义了枚举类型enum test,可以使用该类型来定义变量,就是枚举类型变量,如下:

enum test t1;

此时,定义了枚举类型变量t1,枚举类型变量t1的值与enum test中的枚举常数列表a, b, c没有任何关系。

那么,刚刚定义的枚举类型变量t1,与普通的int类型变量一样,变量中的初始值是一个内存中的随机值。

但是,我们可以把枚举常量列表中定义的常量,赋值给枚举类型变量。例如:

enum test t1;

t1 = c;

此时,枚举类型变量t1就得到了枚举常量c的值。程序测试例子如下:

可以看到,枚举类型enum test就如同int类型一样,它存放的就是一个常量数值,所以,在内存中占据4个字节的存储空间。

刚刚定义枚举类型变量t1的时候,就如同定义一个int类型变量一样,它是一个局部变量,它的值是创建变量时,内存中残留的随机数据。所以,有:

enum test t1; //定义枚举类型变量t1

类似于

int t1; //定义int类型的变量t1

最终,我们可以把枚举常量b赋给枚举类型变量t1。

注意:给枚举类型变量赋值,只能够设置枚举常量列表中定义的常量值。例如:

t1 = 3;

此时,给枚举类型常量t1设置一个数值,它不是枚举常量列表中定义的常量值,那么,就编译错误。

总结:

(1) 在Ubuntu系统中,使用GCC编译器,可以给一个枚举类型变量,设置整数值;

(2) 在Visual Studio编译器中,不可以给一个枚举类型变量,设置整数值;

(3) 所以,为了代码的兼容性,不建议直接给枚举类型变量设置整数值;

所以,我们可以知道:给枚举类型变量赋值,必须设置枚举常量列表中定义的常量。

枚举类型常量列表中定义的常量,它们就是一个常量数值,可以赋值给int、char等类型的变量,例如:

此时,我们定义了一个int类型的变量t1,然后,可以把枚举类型常量b设置给int类型的变量t1。因为,枚举类型常量b就表示一个数值,就如同把一个数值赋值给int类型的变量。

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新