union (共用体)
共用体里可以包含多个变量类型,他们公用一块内存,也就是说,每次只能出现一个,
example :
union test{
int a;
double b;
}
共用体test 中的a, b使用同一块内存,只能调用test.a or test.b二者绝对不能同时出现;
共用体所占内存: 共用体变量中长度最长的类型的字节数
共用体第二次调用时,假如与第一次调用时类型不同,第二次所赋予的值会覆盖掉第一次的内容,但是,不一定是完全覆盖,比如说我第一次调用 test.b., 第二次调用test.a; b是8个字节, 而a 是四个字节,那么显然,剩余四位覆盖不到。
枚举类型 enum
C++ 所提供的另一种创建 符号常量的方式,它可以替代 const ,也可以定义新的类型。用法与结构体相似:
enum test{ one, two, three, four, five = 5, six , seven};
test p;
其中 test 称为 enumeration one, ...seven称为enumerator 在默认情况下, 第一个枚举量(enumerator)的值为0, 此后若没特殊赋值的枚举量其值是前一个的+1,如果有特殊赋值,那么此枚举量的值就是我们所赋予的值。 也就是说 我们的test 中 one = 0, tow = 1, three = 2, four = 3, five = 5, six = 6;
在不使用强制类型转换的时候,p的值只能是 test 所定义的 enumerator中的值。 枚举量是int ,可以转换成int复制给整型变量,但是反之则不可以;
int a = one (valid) ; a = 3 + six ( valid) p = 2 (invalid) p = 1 + six(invalid)
注意 : p = one + six (invalid) 因为c++ 中并没有定义枚举 操作符 + ,所以在运算过程中, 会把 one six 转换成相应的 int ,
如果 int 的值合法,在强制类型转换的情况下,是可以复制给 枚举变量的 如 p = (test) 3;
枚举值的取值范围
C++中每个枚举值都有取之范围, 枚举上限 : 设枚举量的最大值为 max 最小值 min, 则上限就是 大于 max 的最小 2 的幂 - 1, 同理 下限 : 为 大于min的最小 2 的幂 + 1
如 test 的枚举上限就是 7, 下限就是 -1