专栏首页landv《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)

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


新手入门: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();  
} 



本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《挑战30天C++入门极限》C/C++中字符指针数组及指向指针的指针的含义

      函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢?   如果我们有一个int test(int a)的函数,那么,它的地址就...

    landv
  • 《挑战30天C++入门极限》新手入门:C++下的引用类型

    landv
  • 16位和32位的80X86汇编语言的区别

    landv
  • 原生 JS 获取元素的尺寸和位置

    关于元素的尺寸和位置,这原本是 CSS 干的事,但更多的时候需要用 JavaScript 来获取这些参数,比如一个很好的例子 js 实现的图片瀑布流。

    前端博客 : alili.tech
  • R语言去重复数据

    努力在北京混出人样
  • pytest 测试框架学习(8):pytest.exit

    msg: 就是我们退出测试进程时显示的信息。 returncode: 当退出pytest时返回的一个状态码,为 int 类型。

    Mokwing
  • 快速上手小程序云开发

    小程序云开发为微信小程序开发者提供云到端的一站式解决方案,帮助开发者统一构建和管理资源,能有效降低技术门槛、减少研发成本、提升开发效率,协助开发者快速搭建稳定高...

    腾讯云大学
  • 基于数据分析给出运营建议,咋整?!

    有同学问:“如何基于数据分析提出运营建议”,今天我们拿个简单的题目来举例。这个题目陈老师之前讲过,有印象的同学应该还记得。再举一次,是因为每到招聘季都有人把它搬...

    接地气的陈老师
  • 作为管理员,如何监控各部门使用Power BI报表的情况呢

    自从手里握了多家企业后,我总是很不放心,我辛辛苦苦做的分析报告,没人用怎么办?或者我要求他们每天读报表后在群里报数,他们是乱报的咋办?我想,这也是很多管理者较为...

    陈学谦
  • RISC-V对中国科技界意味着什么?

    本文最初发表在 Interconnected,经原作者 Kevin Xu 授权,由 InfoQ 中文站编辑并分享,内容在不改变原意的基础上作了编辑和整理。

    深度学习与Python

扫码关注云+社区

领取腾讯云代金券