c++之枚举 实例、最快入门、使用方法

c++之枚举 快速入门及使用

本文整理了关于枚举最主要的概念及最有灵性的实例,言简意赅,快速上手。对于bool变量,一般用于真、假两种情况下。而枚举,则是在多种(有穷)情况下使用。

一、枚举的定义及初始化

①定义:enum 枚举名{ 

               标识符[=整型常数], 
               标识符[=整型常数], 
... 
               标识符[=整型常数], 
} 枚举变量;

 

②初始化

如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始,依次次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次加1的规则确定其值。例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。 
enum string{x1, x2, x3, x4}x; 
当定义改变成: 
enum string 

    x1, 
    x2=0, 
x3=50, 
x4, 
}x; 
    则x1=0, x2=0, x3=50, x4=51 


注意: 
1. 枚举中每个成员(标识符)结束符是",",不是";", 最后一个成员可省略 ","。 
2. 初始化时可以赋负数, 以后的标识符仍依次加1。 

3. 枚举变量只能取枚举说明结构中的某个标识符常量。 
例如: 
enum string 

x1=5, 
x2, 
x3, 
x4, 
}; 
enum strig x=x3; 
此时, 枚举变量x实际上是7。

二、枚举实例及通俗分析

枚举在现实生活中有许多实例可以列举,例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,对应定义3个常数,即:


  const int input = 1;
  const int output = 2;
  const int append = 3;
  然后,调用以下函数:

bool open_file(string file_name, int open_mode);
  比如,


  open_file("Phenix_and_the_Crane", append);
  这种做法比较简单,但存在许多缺点,主要的一点就是无法限制传递给open_file函数的第2个参数的取值范围,只要传递int类型的值都是合法的。(当然,这样的情况下的应对措施就是在open_file函数内部判断第二个参数的取值,只有在1,2,3范围内才处理。) 使用枚举能在一定程度上减轻这种尴尬(注1),它不但能实现类似于之前定义三个常量的功能,还能够将这三个值组合起来成为独一无二的组。例如:


  enum open_modes {input = 1, output, append};

  以上定义了open_modes为枚举类型enumeration type。每一个命名了的枚举都是唯一的类型,是一个类型标示器type specifier。例如,我们可以重新写一个open_file函数: bool open_file(string file_name, open_modes om);
  在open_modes枚举中,input, output, append称为枚举子enumerator, 它们限定了open_modes定义的对象的取值范围。这个时候,调用open_file函数和之前的方法还是一模一样:


  open_file("Phenix_and_the_Crane", append);
  但是,如果传递给open_file的第二个参数不是open_modes枚举类型值的话(注1),那么编译器就会识别出错误;就算该参数取值等价于input, output, append中的某个,也一样会出错哦!例如:


  open_file("Phenix_and_the_Crane", 1);

文章自此完结。更多关于枚举的使用技巧,就在以后实际使用过程中取发现吧。

 



 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值