首页 理论教育 C语言程序设计教程:枚举数据类型与取值范围

C语言程序设计教程:枚举数据类型与取值范围

更新时间:2025-01-18 工作计划 版权反馈
【摘要】:为此,C语言提供了一种枚举类型。在枚举类型的定义中列举出所有可能的取值,被声明为该枚举类型的变量的取值不能超过其定义的范围。应该说明的是,枚举类型是一种基本的数据类型,而不是一种构造类型,因为它不能被分解为任何基本数据类型。定义枚举类型的一般形式如下:在枚举值表中应一一列出所有可用值,这些值称为枚举元素。例如:该枚举类型名为weekday,枚举值共有7个,即一周中的7天。枚举值可进行关系运算。

在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期只有7天,一年只有12个月等。如果把这些变量声明为整型、字符型或其他类型显然是不妥当的。为此,C语言提供了一种枚举类型。在枚举类型的定义中列举出所有可能的取值,被声明为该枚举类型的变量的取值不能超过其定义的范围。应该说明的是,枚举类型是一种基本的数据类型,而不是一种构造类型,因为它不能被分解为任何基本数据类型。

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

在枚举值表中应一一列出所有可用值,这些值称为枚举元素。枚举元素是用户定义的标识符,这些标识符并不自动地代表什么含义。例如,不因为写成sun(不写sun而写成sunday也可以),就自动代表“星期天”。用什么标识符代表什么含义,完全由程序员决定,并在程序中作相应的处理。

例如:

该枚举类型名为weekday,枚举值共有7个,即一周中的7天。凡被声明为weekday类型的变量,其取值只能是7个枚举值中的某一个。

声明枚举类型后就可以定义枚举类型变量了。在定义枚举类型变量时,可以先定义枚举类型,然后定义变量。例如:

也可以在声明枚举类型的同时定义枚举类型变量。例如:

在进行编译的时候,将枚举元素按常数处理,故称枚举常量。枚举元素不是变量,不能对枚举元素赋值。例如:

上述语句是错误的。

此外,枚举元素不是字符常量,也不是字符串常量,使用时不能用引号对其标注。

枚举元素作为常量是有值的,在编译的时候,按枚举元素定义的顺序使其值分别为0,1,2,3,…。

则workday变量的值为1。这个整数是可以输出的。例如:

将输出整数1。(www.xing528.com)

也可以改变枚举元素的值,在定义时由程序员指定。例如:

指定义枚举元素sun的值为7,mon的值为1,之后的枚举元素的值按顺序依次加1,枚举元素sat的值为6。

枚举值可进行关系运算。例如:

枚举值的关系运算规则是,按其在声明时的顺序号进行比较。如果在声明时没有人为指定枚举元素的取值,则第一个枚举元素的值为0。故关系表达式mon<sun的值为0,而关系表达式sat>fri的值为1。

一个整数不能直接赋值给一个枚举类型变量。例如:

workday=2;

上述语句是错误的。参与赋值运算的两个操作数(workday和2)属于不同的数据类型,应先进行强制类型转换才能赋值。例如:

workday=(enum weekday)2;

相当于将顺序号为2的枚举元素赋给枚举类型变量workday,即相当于

workday=tue;

甚至可以是表达式。例如:

workday=(enum weekday)(5-3);

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈