C05枚举

一、 枚举是什么?
枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。
当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。

二、 枚举有什么用?
1.用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型
2.有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值

三、 枚举怎么用?
1.一般类型 定义形式:先定义枚举类型,再定义枚举变量
enum 枚举类型名{标识符1,标识符2,……,标识符n};
例如
  enum colorname{red,yellow,blue,white,black};
  enum colorname color;
2.定义枚举类型的同时定义枚举变量 
enum colorname{red,yellow,blue,white,black} color;
3.省略枚举名称,直接定义枚举变量 
enum {red,yellow,blue,white,black} color;
说明:变量color是枚举类型enum colorname,它的值只能是red,yellow,blue,white或black

四、 使用枚举要注意什么?
1.enum是关键字,标识枚举类型,定义枚举类型必须以enum开头
2.在定义枚举类型时花括号中的名字称为枚举元素或枚举常量
3.枚举元素不是变量,不能改变其值
4.枚举常量可以进行比较
5.一个枚举变量的值只能是这几个枚举常量之一,可以将枚举常量赋给一个枚举变量。但不能将一个整数赋给它
6.枚举常量不是字符串

五、 枚举代码举例
  • 例1 利用枚举遍历输出五种颜色
int main()
{  enum colorname{red,yellow,blue,white,black};
   enum colorname color;
   for(color=red;color<black;color++)
     switch(color)
    {  case red:printf(″red″);break;
       case yellow:printf(″yellow″);break;
       case blue:printf(″blue″);break;
       case white:printf(″white″);break;
       case black:printf(″black″);break;
    }
    return 0;
}
  • 例2 两个枚举类型综合使用
#include<stdio.h>
enum Season 
{ 
    spring, summer=100, fall=96,winter //在定义枚举类型时改变枚举元素的值
}; 
typedef enum  //类型重定义
{ 
    Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 
}  Weekday;  
void main() 
{ 
    /* Season */  
    printf("%d \n", spring); // 0  
    printf("%d, %c \n", summer, summer); // 100, d 
    printf("%d \n", fall+winter); // 193 
    Season mySeason=winter;  
    if(winter==mySeason)  
        printf("mySeason is winter \n"); // mySeason is winter  
    int x=100; 
    if(x==summer) 
        printf("x is equal to summer\n"); // x is equal to summer  
    printf("%d bytes\n", sizeof(spring)); // 4 bytes  

    /* Weekday */ 
    printf("sizeof Weekday is: %d \n", sizeof(Weekday)); //sizeof Weekday is: 4  
    Weekday today = Saturday; 
    Weekday tomorrow; 
    if(today == Monday)  
         tomorrow = Tuesday;  
    else 
         tomorrow = (Weekday) (today + 1); //转换
}

六、 枚举总结
1. C语言编译器会将枚举元素(red,yellow,blue,white,black)作为整型常量处理,称为枚举常量。 
2. 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。 
  enum colorname{red,yellow,blue,white,black};
即red的值为0,yellow的值为1,blue的值为2,white的值为3 ,black的值为4
3.也可以在定义枚举类型时改变枚举元素的值 
  enum colorname{red,yellow=3,blue,white,black};
没有指定值的枚举元素,其值为前一元素加1。即red的值为0,yellow的值为3,blue的值为4,white的值为5 ,black的值为6
4.同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的命名常量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值