天天看点

C++Primer----表达式左值和右值算术运算符短路求值策略除法运算和取余运算递增和递减运算符成员访问运算符条件运算符(?:)逗号运算符位运算

  • 左值和右值
  • 算术运算符
  • 短路求值策略
  • 除法运算和取余运算
  • 递增和递减运算符
  • 成员访问运算符
  • 条件运算符
  • 逗号运算符
  • 位运算

左值和右值

左值可以位于赋值语句的左侧,右值则不行。

当一个对象被用做右值时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。

算术运算符

算术运算符包括(+ - * / % + - )(前俩个为一元正号和一元负号),满足左结合律,即如果运算符的优先级相同,将按照从左到右的顺序组合运算对象。

短路求值策略

逻辑与(&&) 逻辑或(||) 运算符规定先求左侧运算对象的值,只有当左侧运算对象无法确定表达式的结果时才会计算右侧运算对象的值。

除法运算和取余运算

(-m)/n 和m/(-n)都等于-(m/n)

(-m)%n = -(m%n) m%(-n) = m%n

切勿混淆相等运算符和赋值运算符!!!

递增和递减运算符

前置版本:运算对象加1(或减1),然后将改变后的对象作为求值结果。

后置版本:运算对象加1(或减1),求值结果是运算对象改变之前的那个副本。

后置递增运算符的优先级高于解引用

成员访问运算符

点运算符和箭头运算符都可以用于访问成员,其中,点运算符获取类对象的一个成员。箭头运算符与点运算符有关,且有ptr->mem 等价于 (*ptr).mem

解运算符的优先级低于点运算符,执行解运算的子表达式俩端必须加上括号。

条件运算符(?:)

条件运算符满足右结合律,意味着运算对象按照从右向左的顺序组合。

逗号运算符

首先对左侧表达式求值,然后将求值结果丢弃,逗号运算符真正的结果是右侧表达式的值。

位运算

位运算符:建议将位运算符用于处理无符号类型

位求反运算符:将运算对象逐位求反后生成一个新值,将1置0、将0置1(char类型的运算符首先提升至int类型,提升时运算对象原来的位保持不变,往高位添加0即可)

位异或运算符:如果俩个运算对象的对应位置有且只有一个为1则运算结果中该位为1,否则为0.

如何获取vector对象中的值和如何修改vector对象中的值 //push_back / 范围for语句

继续阅读