C语言基础——枚举类型和类型定义符

十二、枚举类型

12.1概述

在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。
为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。注意,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

12.2枚举类型的定义

enum 枚举名{枚举值表};
在枚举值表中应罗列出所有可用值,这些值被称为枚举元素。

12.3 枚举变量的声明

enum weekday{sun, mou, tue, wed, thu, fri, sat};		//定义枚举类型
enum weekday a, b, c;			//先定义,后声明
enum weekday{sun, mou, tue, wed, thu, fri, sat}a, b, c;		//同时定义和声明
enum {sun, mou, tue, wed, thu, fri, sat}a, b, c;		//直接声明

12.4 枚举变量的赋值

a. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值
b. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…,如在weekday中,sun值为0,mon 值为1,…, sat 值为6。
c. 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量
d. 如一定要把数值赋予枚举变量,则必须用强制类型转换。
e. 枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

a = sum;	b = mon;		//正确的
a = 0;	b = 1;		//错误的
a = (enum weekday)2;		//强制类型转换,把数值赋予枚举变量,相当于 a = tue

十三、类型定义符 typedef

C语言还允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取“别名”。类型定义符typedef即可用来完成此功能。

其一般形式为:typedef 原类型名 新类型名,其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。

typedef int INTEGER 		//用INTEGER来代替int 作整型变量的类型说明了。
INTEGER a, b;		  		//等价于 int a, b

用 typedef 定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。

typedef char NAME[20];		//表示NAME是字符数组类型,数组长度为 20
NAME a1, a2, a3;		//等效于 char a1[20], a2[20], a3[20]

typedef struct stu
{
	char name[20];
	int age;
	char sex;
}STU;
STU boy1, boy2;		//定义STU表示stu的结构类型,然后可用STU来说明结构变量

有时也可用宏定义来代替 typedef 的功能,但是宏定义是由预处理完成的,而 typedef 则是在编译时完成的,后者更为灵活方便。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值