C++学习札记:第26课枚举类型及定义新的类型名字(enum枚举类型+typedef声明新的类型名字)

1.枚举类型:
一个变量只能有几种可能的值,这样的变量可以定义成枚举类型;
变量的值只能在列举出来的值的范围内,其他的值对该变量没有意义。

2.枚举类型的声明:

enum EWeekday          //enumeration
{
	EWeekday1,        //注意这儿都是逗号
	EWeekday2,
	EWeekday3,
	EWeekday4,
	EWeekday5,
	EWeekday6,
	EWeekday7        //最后一个这儿没有符号
};

注意点①
枚举元素按常量处理,所以称作枚举常量。他们不是变量,所以不要对他们进行赋值,即枚举元素的值是固定的。
注意点②
枚举元素是常量,其值是一个整数,按照元素声明时候的顺序从0开始依次进行+1操作,默认的值就是:0,1,2,3,…。如下例:

#include"pch.h"
#include<iostream>
using namespace std;

enum EWeekday
{
	EWeekday1,         //默认其值为0
	EWeekday2,
	EWeekday3,
	EWeekday4,
	EWeekday5,
	EWeekday6,
	EWeekday7
};

int main()
{
	int a = EWeekday1, b = EWeekday2, c = EWeekday3, d = EWeekday4, e = EWeekday5, f = EWeekday6, g = EWeekday7;
	cout << "a=" << a << '\t' << "b=" << b << '\t' << "c=" << c << '\t' << "d=" << d << '\t' << "e=" << e << '\t' << "f=" << f << '\t' << "g=" << g << endl;
}

运行结果为:在这里插入图片描述
注意点③:
枚举元素有默认的值,但也可以在声明的时候指定值。如下例:

#include"pch.h"
#include<iostream>
using namespace std;

enum EWeekday
{
	EWeekday1=3,
	EWeekday2=4,
	EWeekday3=5,              //**这里的赋初值最好是增大,避免出现重复**,以免后续编程出bug。
	EWeekday4,                //未赋初值,∴按照他的上一个元素的值+1的规则进行默认赋值,因此它的值为6。
	EWeekday5,
	EWeekday6,
	EWeekday7
};

int main()
{
	int a = EWeekday1, b = EWeekday2, c = EWeekday3, d = EWeekday4, e = EWeekday5, f = EWeekday6, g = EWeekday7;
	cout << "a=" << a << '\t' << "b=" << b << '\t' << "c=" << c << '\t' << "d=" << d << '\t' << "e=" << e << '\t' << "f=" << f << '\t' << "g=" << g << endl;
}

运行结果为:在这里插入图片描述
注意点④:
枚举值可以用来进行跟整数一样的判断、比较,switch-case 等操作

3.枚举类型和结构体类型结合:

#include"pch.h"
#include<iostream>
using namespace std;

enum ESex                  //定义枚举类型
{
	ESex_Male,
	ESex_Female
};

struct Student            //定义Student这个结构体
{
	string name;
	int anum;
	ESex sex;
	int age;
};

int main()
{
	Student stu;
	stu.sex = ESex_Male;                     //枚举类型和结构体类型结合
	cout << "stu.sex=" << stu.sex << endl;
}

运行结果为:在这里插入图片描述

4.用 typedef 类型声明新的类型名字
使用 typedef 声明一个新的类型名字来代替已有的类型名。注意是新的类型名字,只是名字而已,不是一种全新的类型,只是改个名字而已。

#include"pch.h"
#include<iostream>
using namespace std;

struct Student
{
	string name;
	int anum;
	char sex;
	int age;
};

typedef unsigned int uint;
typedef int myint;
typedef Student Stu;           //这仨就是用 typedef 类型声明新的类型名字

int main()
{
	uint a = 2;
	myint b = 3;
	Stu Stu;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值