1,枚举是个啥?

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

enum day{mon,tue=,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 = ;//不合法,tue的值虽然是1,但是1并不对应着tue,int类型不能赋值给day类型的变量
int hehe = mon;//合法,枚举量是整形 return ;
}

枚举可以简写:

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

3,枚举使用

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

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 ;
}
05-28 17:16