C++ Primer 第4章 知识点回顾

来源:互联网 发布:oauth2.0 java 服务端 编辑:程序博客网 时间:2024/06/05 09:35

4.2 算术运算符

  1. (-m)/n和m/(-n)都等于-(m/n),m%(-n)等于m%n,(-m)%n等于-(m%n)

4.3 逻辑和关系运算符

  1. 进行比较运算时除非比较的对象是布尔类型,否则不要使用布尔字面值true和false作为运算对象
  2. &&、||、条件运算符、逗号运算符规定了求值顺序,对于没有规定运算对象求职顺序的运算符,可能产生未定义行为

4.8 位运算符

  1. & 、|、~
  2. 重载运算符的优先级和结合律和内置版本一致

4.9 sizeof运算符

  1. sizeof运算符返回一条表达式或者一个类型名字所占的字节数,sizeof并不实际计算其运算对象的值
  2. 对指针执行sizeof得到指针本身所占空间的大小,对解引用指针执行sizeoff得到指针指向的对象所占空间的大小,指针不需有效(因为sizeof不会实际求运算对象的值)
  3. 对数组执行sizeof运算得到整个数组所占空间的大小,注意,sizeof不会把数组转换成指针来处理
  4. 对string和vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中元素占用了多少空间

4.11 类型转换

  1. 很多时候,如果表达式中既有整数类型也有浮点数类型的运算对象,整型会转换成浮点型。算术转换的规则定义了一套类型转换的层次,其中运算符的运算对象将转换成最宽的类型。如果一个运算对象是long double ,那么不论另一个运算对象的类型是什么都会转换long double。
  2. 整型提升:bool char signed char undigned char short unsigned short只要他们所有可能的值都能存在int里,他们就会提升成int类型,否则,提升成unsigned int类型
  3. 算术类型和指针类型可以向布尔类型自动转换
  4. const_cast 只能改变运算对象的底层const,static_cast可以处理不包含底层const的任何具有明确定义的类型转换

小结
对于含有超过一个运算符的表达式们要向理解其含义关键要理解优先级、结合律与求值顺序

0 0
原创粉丝点击