左值和右值:左值:用的是对象的身份(内存中的位置),右值:用的是对象的值(内容)

解引用与递增(递减)运算符连用:

  *ivec++:取ivec当前值并向后移动一个元素,等价于*(ivec++),本来++的优先级高于*

条件运算符嵌套:(注意在语句两端加上括号,条件运算符优先级极低)

  A?B:C?D:E等价于A?B:(C?D:E)

位运算符(建议仅将位运算用于无符号类型,避免因符号位问题造成错误)

  用法:

运算符 功能 用法
~ 位求反 ~exp
<< 左移 exp1<<exp2
>> 右移 exp1>>exp2
& 位与 exp1&exp2
^ 位异或 exp1^exp2
| 位或 exp1|exp2

      

  位运算的结果一旦超出位的范围,超出部分的位将会被舍弃

  <<操作符满足左结合律

sizeof运算符:返回一条表达式或类型名所占的字节数,返回值类型为size_t,满足右结合律

  sizeof(data.revenue);//获取类对象data的revenue成员对应类型的大小

  sizeof(arr);//获取数组arr的类型大小,是其所有元素类型大小之和(利用sizeof(arr)/sizeof(*arr)可以获取arr的元素数量

命名的强制类型转换:cast-name<type>(expression),cast-name有4种:static_cast,dynamic_cast(后续章节再提),const_cast,reinterpret_cast

  例如:

  static_cast:

    int j=10;

    double slope=static_cast<double>( j ) / i;(只要不是底层const即可用,适用于将大类型赋给小类型)  

    void *vp=&d;

    double *dp=static_cast<double*>(vp);

  const_cast:

    const char*pc;

    char *p=const_cast<char*>(pc);(要求对象是底层const,借此可以除掉const属性(多用于重载函数),但是不能改变类型)

  reinterpret_cast:"为运算对象的位模式提供较低层次的重新解释",基本上用不到(极可能引起错误,慎用)

  实际上强制类型转换是迫不得已的手段,若非必要无需使用

运算符优先级表见p147

  

    

最新文章

  1. grep 使用或条件 ( grep -e )
  2. JAVA发送邮件工具类
  3. js严格模式“use strict”
  4. 剑指offer系列25---构建乘积数组
  5. CAF(C++ actor framework)使用随笔(延迟发送,消息转发,消息优先级)(四)
  6. Windows I/O模型、同步/异步、阻塞/非阻塞
  7. 深入了解join用法
  8. python刷取CSDN博文访问量之一
  9. BZOJ 1592: [Usaco2008 Feb]Making the Grade 路面修整( dp )
  10. 切诺夫界证明(Chernoff bound)
  11. iOS 中隐藏UITableView最后一条分隔线
  12. 第一册:lesson forty
  13. 项目代码迁移(使用git)
  14. scrapy 手动编写模板
  15. firefox镜像 和geckodriver驱动大全
  16. 导出putty配置
  17. checkbox做全部选中,全部取消效果
  18. 安装部署elasticsearch
  19. Eclipse开发Android的配置(包括ADT安装,SDK配置)
  20. 本人遇到的spring事务之UnexpectedRollbackException异常解决笔记

热门文章

  1. redis 设置为只读模式
  2. 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying 题解
  3. 【BIRT】修改主题背景颜色
  4. CTF 文件包含
  5. 第07组 Beta版本演示
  6. [转]OpenGL图形渲染管线、VBO、VAO、EBO概念及用例
  7. ukulele弹奏模拟器v1.0(待完善)
  8. [转]c++多线程编程之pthread线程深入理解
  9. 通过sed -i ,通过准备好的sh脚本,来设置linux iptable白名单
  10. Oracle系列一 SQL语句基本概念和学习准备