关闭

C++ 学习

120人阅读 评论(0) 收藏 举报
分类:

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

 


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:101355次
    • 积分:5187
    • 等级:
    • 排名:第5509名
    • 原创:437篇
    • 转载:20篇
    • 译文:1篇
    • 评论:0条