zoukankan      html  css  js  c++  java
  • c++ 踩坑大法好 枚举

    1,枚举是个啥?

    c++允许程序员创建自己的数据类型,枚举数据类型是程序员自定义的一种数据类型,其值是一组命名整数常量。

    enum day{mon,tue=2,wed,thu,fri,sat,sun};
    //定义一个叫day的数据类型,如果没有赋值,默认从0开始,mon=0,tue=1。。。如果赋值过了,就像tue=2,那么下一个会+1,wed=3,thu=4,,,

    2,枚举怎么用?

    #include "pch.h"
    using namespace std;
    
    int main() {
        enum day{mon,tue,wed,thu,fri,sat,sun};
        day today;
        today = mon;//合法
        today = 1;//不合法,tue的值虽然是1,但是1并不对应着tue,int类型不能赋值给day类型的变量
        int hehe = mon;//合法,枚举量是整形
    
        return 0;
    }

    枚举可以简写:

    enum {red,green,white,black,blue};
    //省略新类型名的简写,这样做更加关注于定义的符号常量

    3,枚举使用

    #include "pch.h"
    using namespace std;
    enum {red,green,orange};
    int main() {
        int favorcolor = 1;
        switch(favorcolor) {
            //注意c++中switch的一个特性,它跳到1以后,不加break会接着依次执行其下的所有case语句,所以,要根据情况加上break
            case red:printf("u like red
    "); break;
            case green:printf("u  like green
    "); break;
            case orange:printf("u like orange
    "); break;
        }
        return 0;
    }

     4,新式的枚举用法

    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    enum Alert { green, yellow, orange, red }; // traditional enum
    enum class Color { red, blue }; // new enum
    
    int main() {
        int a1 = green;
        int a2 = Alert::yellow;
        //传统的枚举类型Alert内部的数据作用范围是全局的,加不加命名空间都可以访问
    
        Color a3 = Color::red;
        //新式的枚举类型的名称的作用域在类中,必须加上命名空间进行访问
    
        int i1 = Alert::yellow;
        int i2 = Color::red;//错误
        //新式的枚举值不可以转换为其他类型
    
        enum class Color1:int { red, blue };
        enum class Color2 :char { red = 'r', blue = 'b', black };
        //可以用冒号选择枚举的底层数据类型
    
        return 0;
    }
  • 相关阅读:
    转:5个AJAX Loading动画图标生成器
    小练习:图片轮播jQuery版
    找不同,在一定范围内找出不同数最小的数组。
    一个Hibernate的Hello World, 基于Hibernate 4.0
    队列的操作, 计算要出队某个数需要移动的距离.
    使用反射操作私有(Private)方法和属性
    求由色子组成的立方体的5个可见面(底部不算)中所有数字最小之和.
    动态代理的简单实例.
    设计模式:Java的代理模式.
    Java的反射 基础+简单复制对象实例
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/12272866.html
Copyright © 2011-2022 走看看