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

本文详细介绍了C++中的算术运算符、逻辑和关系运算符、位运算符、sizeof运算符及类型转换等内容,包括各类运算符的具体用法、特点及其在实际编程中的应用。

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的任何具有明确定义的类型转换

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值