C++ 学习

原创 2015年11月17日 18:23:28

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

 


相关文章推荐

C++s非常适合新手学习!!!

  • 2017年10月26日 09:52
  • 109.99MB
  • 下载

C++基础知识课件学习

  • 2016年01月11日 19:33
  • 2.55MB
  • 下载

C++的一些不错开源框架,可以学习和借鉴

【本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】 下次造轮子前先看看现有的轮子吧 值得学习的...

学习资料c++primer

  • 2015年04月01日 17:56
  • 21KB
  • 下载

学习用C++开发游戏

  • 2014年11月17日 09:18
  • 2.64MB
  • 下载

Shark:强大的开源C++机器学习库

hark 是一个快速、模块化、功能丰富的开源 C++ 机器学习库,提供了各种机器学习相关技术,比如线性/非线性优化、基于内核学习算法、神经网络等。Shark 已经应用于多个现实项目中。  ...

C++类的学习

  • 2015年04月16日 09:55
  • 593KB
  • 下载

c++讲解,,适合新手学习

  • 2014年09月20日 14:29
  • 26.69MB
  • 下载

算法学习 - 快速幂和矩阵快速幂(复杂度Olog(n))C++实现

快速幂 快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。 快速幂实现原理 快速幂的原理比较好懂,就是说假如我们...

C++语法学习

  • 2014年09月17日 14:40
  • 615KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 学习
举报原因:
原因补充:

(最多只允许输入30个字)