自定义类型:联合和枚举【下】
联系上篇,我们继续写这篇文章。
联合的一个练习:
我们先来看之前写过的代码来判断当前机器的大小端。
我们也可以用联合做一个练习:写一个程序,判断当前机器是大端?还是小端?
也可以写成匿名的联合体类型,因为只用到一次,以后再也不用了。
这种方式就是相当于在i的4个字节里面拿它一个字节,看它是什么来进行判断,这样写真是妙啊!
二.枚举类型
1.枚举类型的声明
枚举顾名思义就是一一列举。
把可能的取值一一列举。
比如我们现实生活中:
一周的星期一到星期日是有限的7天,可以一一列举
性别有:男、女、保密,也可以一一列举
月份有12个月,也可以一一列举
三原色,也是可以意义列举
这些数据的表示就可以使用枚举了。
枚举类型就是把那些它的可能取值有限的这种类型定义为枚举类型,就是有些数据它取值是有限的,那我们就可以用枚举类型来描述它。比如:
其实枚举类型里面的成员是常量—枚举常量。
枚举这里面的可能取值常量,默认是从零开始向下一次递增1的,所以打印结果是0 1 2。为什么是常量呢?是因为它们不能赋值改变。
虽然我们不能改它们,但是我们可以最开始给它们值。
当我们给第一个成员一个值,下面的成员依旧会向下递增1的。
中间赋值
这就是我们要讲的枚举类型创建以及它里面的可能取值,可能取值本质上是常量,这些常量就是枚举常量。
2.枚举类型的优点
为什么使用枚举?
我们可以使用#define 定义常量,为什么非要使用枚举?
枚举的优点:
1.增加代码的可读性和可维护性
2.和#define定义的标识符比较枚举有类型检查,更加严谨。3.便于调试,预处理阶段会删除 #define 定义的符号4.使用方便,一次可以定义多个常量
5.枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用
我们拿枚举类型里面的可能取值给我们所用枚举类型所创建的变量赋值,是理所应当的,是可以的,但是我们不能给它赋值其他类型,这就是类型检查。C语言对类型检查不够严谨,如果想看的话可以转化成C++来看。
3.枚举类型的使用
那是否可以拿整数给枚举变量赋值呢?在C语言中是可以的,但是在C++是不行的,C++的类型检查比较严格。