C++ primer 5 笔记4 chapter 4 表达式

4.1 基础

  1. 要求 二元运算符两侧的数据类型 相同 或者可以转化成 同一类型
  2. 左值, 使用对象的身份, 即其在内存中的地址
  3. 右值, 即使用对象的值
  4. decltype 作用于表达式(非变量) 得到一个引用类型
int * p = nullptr;
decltype(p)   // int *
decltype(*p)   // int &, 这个自己没想明白, 个人感觉应该是 int
decltype(&p)    // int **
  1. 如果在复合表达式中改变了运算对象的值, 在表达式的其他地方不要再使用这个运算对象, 容易产生未定义行为

算术运算符

  1. 一元负号运算符: - x
  2. 取余运算:
(-m)%n == -(m%n)    
m%(-n) == m%n

逻辑和关系运算符

  1. 优先级 && > ||
  2. C++11 允许使用花括号括起来的初始值列表
  3. 赋值运算优先级较低, 常用写法
int i;
while((i = get_value()) != 42){ 
    // further handles
}
  1. 除非必须, 否则不用递增递减的运算符后置表达式
  2. beg++ == (beg++)
  3. sizeof 的两种使用形式
sizeof(type)
sizeof expr

可以使用 :: 成员运算符获取部分元素的大小

  1. 特别注意: 对string 和 vector 类型执行sizeof 运算时候, 只返回该类型固定部分的大小, 不会计算对象元素占用的空间
    这里写图片描述

  2. 类型提升 涉及无符号对象的时候, 有时转换可能会依赖于机器

  3. reinterpret_cast 依赖机器, const_cast 只修改const 属性, 不改变类型

  4. C强制类型转换
type (expr)   // 函数形式
(type) expr   // C 语言风格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值