共用体:union
共用体(union)是一种数据格式,能够存储不同的数据类型,但只能同时存储其中的一种类型。
结构可以同时存储int、long和double,共用体只能存储int、long和double。
共用体的句法:
union one4all { int int_val; long long_val; double double_val; };
可以使用one4all变量来存int、long和double,条件是在不同的时间进行。
共用体每次只能存储一个值。
共用体,当数据项使用两种格式或更多种格式,但不会同时使用时,可节省空间。
struct widget { char brand[20]; int type; union id { long id_num; char id_char[20]; } id_val; } widget prize if (prize.type == 1) cin >> prize.id_val.id_num; else cin >> prize.id_val.id_char;
共用体常用于操作系统数据结构或硬件数据结构。
枚举:enumeration
enum spectrum {red, orange, yellow, green, bule, violet};
spectrum被称为枚举(enumeration)。red、orange等常量叫做枚举量(enumerator)。
枚举变量的属性:
1. 在不进行强制类型转换的情况下,只能将定义枚举时使用的枚举量赋给这种枚举的变量。
2. 对于枚举,只定义了赋值运算符,没有定义算数运算。
3. 枚举量是整型,可被提升为int类型,但int类型不能自动转换为枚举类型。
设置枚举量的值
1. 可以使用赋值运算符来显示地设置枚举量的值。指定的值必须为整数。
2. 后面没有被初始化的枚举量的值将比其前面的枚举量大1。
3. 可以创建多个值相同的枚举量。
枚举的取值范围
1. 通过强制类型转换,可以将取值范围中的任何整数赋给枚举变量,即使这个值不是枚举值。
2. 取值范围:首先,找到枚举量的最大值。找到大于这个最大值的,最小的2的幂,将它减去1。如枚举量的最大值为101,在2的幂中,比这个数大的最小值为128,因此取值上限为127。其次,找到枚举量的最小值。如果它不小于0,则取值下限为0;否则采用与寻找上限方式相同的方式,最后加上负号。如最小值为-6,而比它小的、最大的2的幂是-8,因此下限为-7。
联系客服