新手入门:C/C++中枚举类型(enum)

  如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。

  举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!

enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。

  这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!

enum box{pencil,pen}; 
 
enum box box2;//或者简写成box box2;

  再有一种就是在声明的时候同时定义。

enum {pencil,pen}box,box2; //在声明的同时进行定义!

  枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!

enum box{pencil=1,pen=2};

但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如

enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!

  前面说了那么多,下面给出一个完整的例子大家可以通过以下的代码的学习进行更完整的学习!

#include <iostream> 
using namespace std; 
 
void main(void) 

    enum egg {a,b,c}; 
    enum egg test; //在这里你可以简写成egg test; 
 
    test = c; //对枚举变量test进行赋予元素操作,这里之所以叫赋元素操作不叫赋值操作就是为了让大家明白枚举变量是不能直接赋予算数值的,例如(test=1;)这样的操作都是不被编译器所接受的,正确的方式是先进行强制类型转换例如(test = (enum egg) 0;)! 
 
    if (test==c) 
    { 
        cout <<"枚举变量判断:test枚举对应的枚举元素是c" << endl; 
    } 
 
    if (test==2) 
    { 
        cout <<"枚举变量判断:test枚举元素的值是2" << endl; 
    } 
 
    cout << a << "|" << b << "|" << test <<endl; 
 
    test = (enum egg) 0; //强制类型转换 
    cout << "枚举变量test值改变为:" << test <<endl; 
    cin.get(); 
}

  看到这里要最后说一个问题,就是枚举变量中的枚举元素(或者叫枚举常量)在特殊情况下是会被iostream> 
using namespace std; 
 
void main(void) 

    enum test {a,b}; 
    int c=1+b; //自动提升为算术类型 
    cout << c <<endl; 
    cin.get(); 
}

 
 

转载于:https://www.cnblogs.com/landv/p/11184652.html

《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)相关推荐

  1. python新手入门-python新手入门方法

    随着人工智能 大数据的火热 Python成为了广大科学家和普通大众的学习语言.在学习Python的过程中 有很多人感到迷茫 不知道自己该从什么地方入手,今天我们就来说一些新手该如何学习Python编程 ...

  2. linux 入门命令,新手入门Linux命令集锦

    一.常用系统工作命令 1.wget 命令 作用:用于在终端中下载网络文件. 格式:wget [参数] 下载地址 参数及作用: -b : 后台下载模式 -d:显示调试信息 -N:该参数指定wget只下载 ...

  3. 阿里云机器学习怎么玩?这本新手入门指南揭秘了!

    想知道我是怎样免费在阿里云上玩机器学习的吗? 不慌,这就告诉你答案~ 它来了--阿里云向个人免费开放云端深度学习开发环境DSW(DataScienceWorkshop),还有免费GPU资源可以使用,实 ...

  4. 【原创】新手入门一篇就够:从零开发移动端IM

    一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...

  5. 课程上线 -“新手入门 : Windows Phone 8.1 开发”

    经过近1个月的准备和录制,"新手入门 : Windows Phone 8.1 开发"系列课程已经在Microsoft 虚拟学院上线,链接地址为:http://www.microso ...

  6. Docker新手入门:基本用法

    Docker新手入门:基本用法 1.Docker简介 1.1 第一本Docker书 工作中不断碰到Docker,今天终于算是正式开始学习了.在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少 ...

  7. 新手入门指导:Vue 2.0 的建议学习顺序

    起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script> ...

  8. JavaScript新手入门教程大全~~~

    JavaScript新手入门教程大全~~~ 一. js教程介绍:JavaScript是一种运行在浏览器中的解释型的编程语言. 那么问题来了,为什么我们要学JavaScript?因为你没有选择.在Web ...

  9. 鸿蒙系统新手教程,鸿蒙灭神决新手入门全流程图文攻略

    鸿蒙灭神决新手入门全流程图文攻略 2019-03-21 15:04:13来源:天天RPG编辑:野狐禅评论(0) 中后期 回归主题,如果还是打不过神器2,可以先到"中级挑战"这里完成 ...

最新文章

  1. Logback Pattern 日志格式配置
  2. MyBatis(二)——多对一、一对多
  3. c php base64,C语言实现base64编码,base64解码
  4. linux下获取时间的函数
  5. NYOJ 99单词拼接(有向图的欧拉(回)路)
  6. apache 配置 中英
  7. 阿里云服务器如何快速搭建Docker环境
  8. 【笔记】VUE学习笔记
  9. Multi-task中的多任务loss平衡问题
  10. C语言12进制逆序输出,C语言将整数以二进制逆序
  11. 从零开始学习深度学习,推荐几本书单,建议按照先后顺序排名进行学习
  12. 麦克马斯特大学计算机的强项,阿尔伯塔大学和麦克马斯特大学哪所学校好?
  13. JavaScript swiper
  14. imp导入时遇到的问题及解决方式
  15. 故障发散-Recv-Q阻塞
  16. 如何用Python找出英语和汉语中特定词性的单词
  17. 公众号如何开通留言功能?
  18. java+appium+mumu模拟器 APP和小程序自动化测试
  19. 使用Python获取bing壁纸接口
  20. 技术面试中,什么样的问题才是好问题?

热门文章

  1. 屏蔽Drupal中的“Notice: Undefined index”警告
  2. C/C++流程图生成器 C转流程图【worldsing笔记】
  3. POJ1067_取石子游戏_威佐夫博弈
  4. C++标准库简介(转)
  5. ORB_SLAM2代码阅读(1)——系统入口
  6. php中input的使用,php输入流php://input如何使用
  7. php 访问类成员,PHP类成员的访问方式和权限_PHP教程
  8. 4行指令解决pip下载Python第三方库太慢问题(pip更换国内下载源)
  9. CenterNet算法快速入门
  10. E:By Elevator or Stairs? CF595 DP最短路