VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 8064|回复: 117

《实用C++》第26课 枚举类型及定义新的类型名字

  [复制链接]
01_avatar_middle
最佳答案
6 
online_admins 发表于 2018-3-5 01:39:22 | 显示全部楼层 |阅读模式
1、枚举类型:
如果一个变量只能有几种可能的值,这样的变量可以定义成枚举类型。所谓的 “枚举” 是指可以将变量的值一一列举出来,变量的值只能在列举出来的值的范围内,其他的值对该变量没有意义,例如:星期几、人种颜色、性别、月份 等等。枚举类型也是一种自定义类型。

2、枚举类型的声明:
声明枚举类型用 enum 开头,例如:
enum ESex
{
        ESex_Male, //男性
        ESex_FMale //女性
};

以上就是定义了一个枚举类型 ESex,大括号内部的 ESex_Male、ESex_FMale 称为枚举元素或枚举常量。表示这个枚举类型可能的值。

注意事项:
①、枚举元素按常量处理,所以称作枚举常量。他们不是变量,所以不要对他们进行赋值,即枚举元素的值是固定的;
例如:ESex_Male = 8; 这种是错误的,大家可以在vs2013中试试;

②、枚举元素是常量,所以其也是有值的,他们的值是一个整数,按照元素声明时候的顺序从0开始依次进行+1操作,默认的值就是:0,1,2,3,...
例如,上面的ESex枚举类型中,ESex_Male 的值默认是0,ESex_FMale 的默认值是1,依此类推。

③、枚举元素有默认的值,但也可以在声明的时候指定值,例如:
enum EWeekDay
{
        EWeekDay_1 = 3,
        EWeekDay_2 = 4,
        EWeekDay_3 = 5,
        EWeekDay_4,
        EWeekDay_5,
        EWeekDay_6,
        EWeekDay_7,
};
其中从 EWeekDay_4 开始未赋值,所以按照他的上一个元素的值+1的规则进行默认赋值,也就是 EWeekDay_3 + 1 = 6。
这里面有个注意事项,即,上面赋值的最好是依次增大,不然有可能会造成两个枚举元素是一样的值,例如:
enum EWeekDay
{
        EWeekDay_1 = 3,
        EWeekDay_2 = 2,
        EWeekDay_3 = 1,
        EWeekDay_4,
        EWeekDay_5,
        EWeekDay_6,
        EWeekDay_7,
};

④、枚举值可以用来进行跟整数一样的判断,比较,switch-case 等操作,例如:
int ab = 2;
if(EWeekDay_1 > ab )
{
    //...
}

⑤、虽然枚举类型的变量可以看做是整形类型的变量,但是不能把普通的整数赋值给枚举类型变量,例如:
EWeekDay day = 2;
这种是错误的,除非进行强制类型转换,但是不建议。最好还是:
EWeekDay day = EWeekDay_2;

3、枚举类型举例:枚举类型和结构体类型结合:
struct Student
{
    string name;
    int num;
    ESex sex;
    int age;
};

Student stu;
stu.sex = ESex_Male;

4、用 typedef 类型声明新的类型名字:
除了可以用 struct 结构体,union 联合体,enum 枚举 等自定义类型以外,还可以使用 typedef 声明一个新的类型名字来代替已有的类型名。注意是新的类型名字,只是名字而已,不是一种全新的类型,只是改个名字而已。
例如,我们定义一个无符号的整型int变量可以这样来定义:unsigned int a = 5;
类型的名字比较长,unsigned int,而且以后所有定义无符号的整型int变量都得这么写,那么有没有简单的写法呢,typedef就派上用场了,咱们可以给 unsigned int 改个名字,例如:
typedef unsigned int uint;
uint a = 5;
所以,以后所有的 unsigned int 都可以改成 uint 了,方便吧?同理,其他的类型也都可以使用 typedef 改名,例如:
typedef int myint;
typedef unsigned long ulong;
typedef Student StuT;
typedef EWeekDay EWDay;
以上,都是可以的哦!

5、小作业:
课后自己练习定义枚举类型变量以及使用 typedef 定义新的类型名!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av38388453/?p=28
MP4高清视频下载地址:链接:https://pan.baidu.com/s/1iYkHoX0XbBsdKZum8Mj1dg 提取码:kwok
本节课件下载(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

备注:VIP会员可免费下载本站所有资源(点击查看)
提示:通过购买VC驿站U盘打包(点击查看)也可加入终身Vip会员^_^




上一篇:《实用C++》第25课 结构体数组与指针
下一篇:《实用C++》第27课 引用及new和delete的使用
98_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-5 09:45:51 | 显示全部楼层
继续学习
10_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-6 13:42:06 | 显示全部楼层
继续深入学习
60_avatar_middle
最佳答案
0 
online_vip 发表于 2018-3-6 18:34:04 | 显示全部楼层

继续学习
15_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-6 20:22:19 | 显示全部楼层

继续学习
08_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-6 20:28:14 | 显示全部楼层
《实用C++》第26课 枚举类型及定义新的类型名字
80_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-6 21:55:59 | 显示全部楼层
坚持学习!!!
18_avatar_middle
最佳答案
0 
online_vip 发表于 2018-3-7 09:10:45 | 显示全部楼层
学习学习
74_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-7 10:01:50 | 显示全部楼层
看看      
51_avatar_middle
最佳答案
0 
online_vip 发表于 2018-3-8 15:35:45 | 显示全部楼层
谢谢分享
22_avatar_middle
最佳答案
0 
online_vip 发表于 2018-3-8 22:03:17 | 显示全部楼层
来学习了啊....
59_avatar_middle
最佳答案
0 
online_vip 发表于 2018-3-10 00:43:26 | 显示全部楼层
实用C++》第26课 枚举类型及定义新的类
78_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-10 12:29:09 | 显示全部楼层
太好啦,又出新课。
17_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-11 11:52:07 | 显示全部楼层
继续学习
08_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-11 12:02:25 | 显示全部楼层
最喜欢看老师的教程!
69_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-15 11:01:48 | 显示全部楼层
谢谢管理,下载看看。
94_avatar_middle
最佳答案
0 
online_vip 发表于 2018-3-17 17:58:52 | 显示全部楼层
谢谢管理,下载看看。
13_avatar_middle
最佳答案
0 
online_vip 发表于 2018-3-17 18:51:29 | 显示全部楼层
hello world
69_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-21 18:28:20 | 显示全部楼层
谢谢版主,辛苦了
15_avatar_middle
最佳答案
0 
在线会员 发表于 2018-3-21 23:16:48 | 显示全部楼层
支持支持支持
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-11-16 00:43

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表