枚举

枚举类型在定义中列举出所有可能的值,枚举变量的取值不能超过定义的范围。用于规定被限定在一个有限范围内的变量。枚举类型是一种基本数据类型。

定义

一般形式:enum枚举名(枚举值表);
枚举值表中应列出所有可用的值,这些值被称为枚举元素

枚举变量的说明

它与结构体一样也可用三种形式说明
设变量a,b,c被说明为weekday则:
先定义后说明:
enum weekday{sun,mon,tue,web,thu,fri,sat};
enum weekday a,b,c;
同时定义说明:
enum weekday{sum,mon,tue,web,thu,fri,sat}a,b,c;
直接说明:
enum {sun,mon,tue,web,thu,fri,sat}a,b,c;

使用规定

(1)枚举值是常量,不是变量.不能用赋值语句对其进行赋值.
例:sun=2;等等
(2)枚举元素本身是由系统定义的一个表示序号的值.例:在weekday中,sun值为0,mon值为1等等
例:枚举变量的应用
enum weekday{sum,mon,tue,web,thu,fri,sat}a,b,c;
a=sun;
b=mon;
c=tue;
例中只能把枚举值赋予枚举变量,不能把枚举元素的值直接赋予枚举变量.例:a=sum;b=mon;正确;a=0,b=1;不正确.如果一定要把数值赋给枚举变量,则需要使用强制转换.例:a=(enum weekday)2;
意义是把顺序号为2的枚举元素赋予枚举变量a。相当于a=tue。
它既不是字符常量也不是字符串常量,使用时不需要加单引号与双引号。

用typedef定义类型

C语言允许用户自己定义类型说明符。用typedef来完成此功能。例:
typedef int integer; //int的全称为integer
integer a,b; //用typedef定义后可用integer替换int
还可以用typedef定义数组,指针,结构体等类型.例:
typedef char NAME[20]; //typedef定义数组
NAME a1,a2,a3; //直接用NAME说明变量.
struct stu {
           char num[6];
           char name[10];
           char sex;
          double score;
      }STU
STU body1,body2;
typedef一般形式为:typedef 原类型名 新类型名
原类型名含有定义部分,新类型名一般用大写表示以便区别
有时也可以用宏定义表示,但没有typedef灵活方便.

你可能感兴趣的:(C语言,c语言)