C++ 枚举(enum)

一、枚举定义

  • 在C++中,枚举(Enum)是一种用户定义的数据类型,用于定义命名的整数常量集合。枚举通过列出所有可能的值来创建一个新的数据类型,并为每个值分配一个整数值
#include <iostream>

// 定义一个枚举类型
enum Day {
    Sunday,// 默认为0
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday = 6,// 赋值为6
    Saturday// 默认为6 + 1 = 7
};

int main() {
    Day today = Wednesday;
    std::cout << today << std::endl; // 隐式转化为对应值(输出:3)
    // 使用枚举变量
    if (today == Wednesday) {
        std::cout << "It's Wednesday!" << std::endl;
    }

    return 0;
}

二、枚举类型以及对应性质

2.1 enum 枚举

enum Buffers {
    Color,
    Depth
};

Buffers bufferType = Color; 
Buffers bufferType = Buffers(0); 
int value = bufferType; //支持隐式转换

cout << bufferType; //隐式类型转换,输出对应的值(Color = 0, Depth = 1)

2.2 enum class枚举

enum class Buffers {
    Color,
    Depth
};

//作用域限定
Buffers bufferType = Buffers::Color; // 正确
Buffers bufferType = Color; // 错误
Buffers bufferType = Buffers(0); // 正确

int value = bufferType; //错误,不支持隐式转换
//需要显式地将其转换为整数或者其他类型
Buffers bufferType = Buffers::Color;
cast_static<int> bufferTupe;//强制类型转换

cout << bufferType; //不支持隐式类型转换,报错
cout << static_cast<int>(bufferType);// 显式类型转换
C++中的枚举类型(enum)是一种用户定义的数据类型,它用于定义一组命名的整数常量。枚举类型的语法如下: ```c++ enum 枚举类型名 { 枚举值1, 枚举值2, ... }; ``` 其中,枚举值可以是任何整数常量,如果没有显式地为枚举值指定值,则第一个枚举值默认为0,后续枚举值依次加1。例如: ```c++ enum Weekday { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; ``` 上述代码定义了一个Weekday枚举类型,其中Monday的值为0,Tuesday的值为1,以此类推。 可以通过以下方式定义枚举值的值: ```c++ enum Weekday { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7 }; ``` 上述代码定义了一个Weekday枚举类型,与之前的定义不同的是,这里显式地为每个枚举值指定了值。 枚举类型可以用于定义变量、函数参数、函数返回值等,例如: ```c++ enum Weekday { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; Weekday today = Monday; void printWeekday(Weekday day) { switch (day) { case Monday: cout << "Monday" << endl; break; case Tuesday: cout << "Tuesday" << endl; break; case Wednesday: cout << "Wednesday" << endl; break; case Thursday: cout << "Thursday" << endl; break; case Friday: cout << "Friday" << endl; break; case Saturday: cout << "Saturday" << endl; break; case Sunday: cout << "Sunday" << endl; break; } } Weekday getNextDay(Weekday day) { return static_cast<Weekday>((day + 1) % 7); } ``` 上述代码定义了一个Weekday枚举类型以及一些与之相关的变量和函数。注意,在printWeekday函数中,我们使用了switch语句来根据传入的Weekday枚举值进行不同的操作。在getNextDay函数中,我们使用了static_cast将整数常量转换为Weekday类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值