4 复合类型

6.枚举

6.0背景知识:符号常量的定义

1) 预处理器方式

#define INT_MAX 6200
  • C++编译过程首先将源代码传递给预处理器,#define为一个预处理器编译质量,告诉处理器,在程序中查找INT_MAX,并将是u偶有的INT_MAX都替换为6200
  • 预处理器查找独立的标记,跳过嵌入的单词
  • #define编译指令是C语言遗留下来的

2) const关键字

const int MAX = 6200;
命名规则:
1)将整个名称大写
2)将名称首字母大写
3)以字母k打头

好处:

  • 能够明确指定类型
  • 能够使用C++作用域规则
  • 可以用于更复杂的类型(数组或结构)

6.1 enum的使用

enum工具提供了另一种创建符号常量的方式
好处:允许定义新类型

enum spectrum{red, orange, yellow, green};
spectrum band; 声明该类型变量
  • spectrum 称为新类型的名称,spectrum被称为枚举
  • 将red、orange等作为符号常量,对应整数值0~3,这些常量为枚举量

6.2 enum的特性

  • 在不强制类型转换情况下,只能将定义枚举时使用的枚举量赋给这种枚举的变量
  • 没有为枚举定义算术运算
  • 枚举量是整型(short int long longlong),可被提升为int类型,但int类型不能自动转换为枚举类型
  • 若只打算使用常量,则可以省略枚举类型的名称;
band = blue;
int color = blue;
int a = 3 + blue;
band = spectrum(3);

错误使用:
band++;
band = 3;  

6.3 枚举量值的设置

  • 可以使用赋值运算符来显式地设置枚举量的值
enum bits{one = 1 , two = 2 , four = 4};
  • 指定的值必须是==整数
  • 也可以只显示定义部分枚举量的值
  • 选择用多少空间存储枚举值由编译器决定,取值范围较小的枚举,一个字节或更少空间,包含long类型值,使用四个字节
enum bits2{first , second = 100, third}

first默认情况为0 , 后面没被初试话的枚举量值比前面的枚举量大1,third值为101

6.4 枚举的取值范围

每个枚举都有取值范围
通过强制类型转换,可以将取值范围中的任何整数值赋给枚举变量,即使这个值不是枚举值

取值范围定义:

  • 上限:枚举量最大值为a ,找到大于a的、最小的2的幂为b,b -1即为上限
  • 下限:枚举量最小值为c ,若c>=0,下限为0,否则
    找到大于-c的、最小的2的幂为d,-(d -1)即为下限

a=101 ,b=128,上限为127
c=-6,d=8,下限为-7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值