C++--enum--枚举

C/C++枚举类型:

不限定作用域的枚举类型


关键字:enum
声明枚举类型,然后可以用枚举类型来定义变量(如同结构体):
enum Color{white,black,yellow};
{注意分号}
Color color_type;
color_type 变量的值只限于枚举类型Color中的值

枚举类型中的元素称为:枚举元素或者枚举常量

也可以不用声明枚举类型名,直接定义枚举变量:
enum{white,black,yellow}color_type;

注意
1枚举常量是常量,不能在枚举常量列表之外的地方对枚举类型中的枚举常量赋值。
2:每一个枚举常量都代表一个整数,如果声明时没有给枚举常量赋值,则默认从0开始,往后逐渐加1。如果某个元素被指定值,往后的又逐渐加1.
eg:
enum num{n1,n2=4,n3,n4,n5=10,n6};
则:n1=0,n3=5,n4=6,n6=11 。
3:枚举元素不要重复,重复就没有意义了。

4,枚举类型如果在头文件的类中定义,在源文件作为函数返回类型时,必须用作用域运算符指定,否则就是未定义。

5,可以定义枚举类型的变量,也可以用枚举元素给变量赋值。(HTTP请求方法获取)

枚举和switch

枚举虽然可以用在switch中,语法不会保错,但是因为枚举变量的值都是枚举类型,所以switch中的所有枚举选项尽管值不相等,但是类型相同,都会比较成功而被执行。

所以同一个枚举常量的值放在一个switch中比较毫无意义

限定作用域的枚举类型

enum class/struct{};

链接

作用:

1,限定作用域,防止命令冲突;

2,防止隐式类型转换;

switch语法

其实,不管限定作用域枚举还是不限定作用域枚举,甚至普通数据类型,只要成功匹配到目标结果,如果不退出,下面的结果都将匹配成功。

#include <iostream>

using namespace std;

enum class ELanguage {
    kCHINESE,
    kENGLISH,
    kKOREAN
};
enum color {
    whilte,
    black,
    gray
};

int main() {
    switch (100) {
    case 10:cout << 10 << endl;
    case 100:cout << 100 << endl;
    case 1000:cout << 1000 << endl;
    default:
        break;
    }
    ELanguage language = ELanguage::kCHINESE;
    switch (language) {
    case ELanguage::kCHINESE:
        std::cout << "chninese" << std::endl;
    case ELanguage::kENGLISH:
        std::cout << "english" << std::endl;
    case ELanguage::kKOREAN:
        std::cout << "korean" << std::endl;
    default:
        break;
    }
    color c1 = whilte;
    switch (c1) {
    case whilte: 
        cout << "whilte=" << whilte << endl;
    case black: 
        cout << "black=" << black << endl;
    case gray: 
        cout << "gray=" << gray << endl;
    default:
        break;
    }
    return 0;
}

相关推荐

  1. C程序设计】C enum()

    2024-01-23 07:20:04       57 阅读
  2. C++ 类型 ← 关键字 enum

    2024-01-23 07:20:04       38 阅读
  3. android——enum

    2024-01-23 07:20:04       41 阅读
  4. Python 进阶语法:enum

    2024-01-23 07:20:04       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-23 07:20:04       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-23 07:20:04       97 阅读
  3. 在Django里面运行非项目文件

    2024-01-23 07:20:04       78 阅读
  4. Python语言-面向对象

    2024-01-23 07:20:04       88 阅读

热门阅读

  1. 69.x 的平方根

    2024-01-23 07:20:04       59 阅读
  2. python实现3D玫瑰花

    2024-01-23 07:20:04       55 阅读
  3. 【科研】陈天奇-机器学习科研的十年有感

    2024-01-23 07:20:04       49 阅读
  4. 【FAQ】NPM 引入本地依赖包

    2024-01-23 07:20:04       57 阅读
  5. 05 SpringBoot之跨域

    2024-01-23 07:20:04       48 阅读
  6. vue和react的差异梳理

    2024-01-23 07:20:04       59 阅读
  7. ChatGPT Claude Bard 生成式 AI 免责声明

    2024-01-23 07:20:04       50 阅读
  8. 浏览器require加载devextreme-react组件

    2024-01-23 07:20:04       56 阅读
  9. 深度学习 pytorch的使用(张量2)

    2024-01-23 07:20:04       43 阅读
  10. 解决nodejs报错内存泄漏问题,项目无法运行

    2024-01-23 07:20:04       55 阅读
  11. Kubernetes中拉取Harbor私有镜像

    2024-01-23 07:20:04       56 阅读